GreenSky is a resources management system oriented to farmers for managing lands and work on the process of sowing, growing and harvest with multiple tools to automate and reduce food safety costs and speed work for farmers, foreman, shippers.
Our client has reached us asking for a talented team to build a web application using AngularJS/NodeJs to provide on demand service for new clients. During this firsts phase we we've chosen an architecture for the system based on a API Restful (backend nodejs app) with a solid web application (frontend Angular app).
We defined the Core API backend server based on ExpressJs framework and PostgreSQL database, integrating Swagger and SequelizeJS (ORM), ensuring that all elements are in place to allow future scaling when needed.
We started from scratch with the new AngularJs app to implement the frontend. The web application has been designed with the new UI/UX recommendations based on Material Design using Fuse Theme to reach a robust web app.
The first part of the process was to understand given business rules and work together with our client to suggest changes and improvements. We have also given advises about Node and Angular version of the application, making upgrades when new version were released. We have also worked to choose best server features and hosting for both applications (backend and frontend).
We reached final requirements document and diagram to start working on development. Although, we have to get back to it and update several times during development to make sure we cover new requirements for new requested features
As starting point, we have integrated Swagger into the NodeJs backend application in order to keep an up-to-date endpoints documentation. This allowed us to easily create the API Restful with all necessary documentation for developers working on client web app during development process and allow us to reduce work time for them.
We created a base application so we can expand multiple modules for each new feature. We divided our team to work in parallel, one team focused on the UI/UX design implementing angular pages and the other team working on backend server and RESTful API endpoints.
Two different teams working at the same time allowed us to work faster on the development phase. Also allowed us to have a shared knowledge and set up meetings with both teams making sure about users experience (UX) across entire platform. We have integrated a theme with Angular Material tool, this is a great approach in order to save time on development applying new functionalities. We have deployed Docker for development environments
In regards to system security and access level, we've implemented a page for handle all access level and system permissions to define who can see each website section.
There are several sections on the management system. You can find common sections like user management and static pages but we also implemented complex sections with different awesome tools:
- Ranches and block management: module to create ranches and associates blocks. This is key to start the process. Under this module the user can use Google Map to drag and drop markers and easily set geolocation of each block.
- Grower Schedule: We have implemented a grid page where the user can create tasks, assign tasks to one of the employees and set start/end dates for each task. Each user can add notes and mark tasks as completed.
- Fiscal Year: we have implemented a feature to manage everything based on the fiscal year. This makes much easier to farmers to make the season check.
- Documents management: we know paperwork is still needed and documents are a key part of the process. That's why we helped to define and develop the documents module to upload and associate documents with each ranch and block. User can use any format and even take a picture with a smartphone and upload it as document!
As part of the server setup, we have implemented an automatic deploy for staging servers in order to save time releasing changes as well as a cronjobs to improve the performance in some heavy tasks (workers).
The application is now on maintenance phase.