


GAP Connections - Agricultural Cloud App
Gap Connections (GAPC)
Built on Microsoft Azure and SharePoint Online, the GAP Grower System is a secure website with user roles for growers, educators, auditors, company users, and GAPC users. The system is a .NET web application with data services, single page apps, reporting tools, and profile management. The source code is stored in the cloud using Microsoft Team Foundation Server (TFS) and published to a Microsoft Azure Virtual Machine. The grower system a tiered environment consisting of Stage (QA) and Production. All data is stored securely in Azure databases and all the databases are backed up nightly using a custom .NET application that makes an OAuth connection to store the backup file in Azure Blog Storage.
GAPC certifies tobacco growers. The certification process includes a having a GAPC user account with a complete profile, a complete GAPC Self-Assessment, some education requirements, and an on-farm audit. All of these rely heavy on the GAPC Grower System.
Profile management is a Single Page application that uses jQuery AJAX requests for data and Knockout for data-bindings. We use a third-party JavaScript library to display a QR Code in a printable version of the Grower’s Card which is part of the profile management page. The page utilizes modernizer to allow legacy browsers to view the page controls that are HTML5. The GAPC user base is farmers, many of whom use legacy browsers, so development has to consider many browsers will not support HTML5 or CSS3. The system uses bootstrap for central management of layout and styles.
GAPC Self-Assessment System is .NET application that presents a series of questions to be answered by the grower throughout the grow year. The system uses JavaScript http requests to retrieve JSON data from a .NET service and uses React to bind the data to controls. The question and answers can be added and removed. There are a variety of question types ranging from single text answers to highly customized .NET user controls that have complex data bindings on the client side. The self-assessment uses React to handle color shading based on answer being filled in and show/hide questions based on processing a set of rules for each question when answered.
Education systems include mobile applications and reporting. The educator scanning mobile application was developed on the iOS platform. The mobile app can scan grower cards and record their attendance at training events. The app connects to data services provided by the GAPC Grower System. AirWatch is used for secure deployment of the app and the management of GAPC mobile devices.
GAPC has Grower mobile applications that are available in the Apple Store and Google Play. Growers can present their digital grower card with QR Code via the mobile app.
Reporting in the GAPC Grower Systems utilizes third-party controls by DevExpress. Data binding using JavaScript and Knockout / React or Entity Framework and .NET. Also have prototyped some dashboards in Power BI for the growers.
Grower System is integrated with SharePoint Online. When a GAPC Audit is completed, a PDF copy of the audit results are stored in SharePoint which the grower can access from the Grower System. Or when the grower is approved for certification the certificate is created in .NET and stored in SharePoint. In addition to document management, the Grower System utilizes the SharePoint’s Business Connectivity Services (BCS) and InfoPath Forms Services.
GAPC Grower System data services are consumed by many of the GAPC systems which include GAPC Self-Assessments, GAPC Mobile Grower App, GAPC Event Scanning System, GAPC Certification Application (PHP platform), and GAPC public website (PHP platform). All the web services in the GAPC Grower System were built on Microsoft .NET data services and use JSON for the request and response objects. GAPC uses Node.js to synchronize data in an Azure SQL Server instance from a MySQL database outside the environment.