Designing the Backend System of an Agritech App

I am a software developer and project manager; passionate about solving problems through IT.
Search for a command to run...

I am a software developer and project manager; passionate about solving problems through IT.
No comments yet. Be the first to comment.
The realm of Brain-Computer Interfaces (BCIs) is rapidly evolving, promising to revolutionize human-computer interaction. From medical applications like restoring mobility and communication to entertainment and cognitive enhancement, BCIs are poised ...
If you’re into Technical Writing or a member of any tech community, you’ve probably heard of the buzzword “DevRel.” It’s strange and confusing how so many job roles have been introduced into the world during this information age, and even confusing t...
Web scraping is an automatic method to obtain large amounts of data from websites. The data is largely unstructured and can be further refined. In this article, we will be testing the desktop application Scrape Any Website as an exercise for the HNGi...
Java is a multi-platform, object-oriented, and network-centric language. Spring Boot is an open-source Java-based framework used to create a microservice. It provides a good platform for Java developers to develop stand-alone and production-grade spr...
Going straight to coding without a ‘definite’ idea of what your app should look and feel like is very risky and can lead to unnecessary rework. It’s therefore necessary to plan a roadmap or process flow. This does not mean you have to have it all pla...
With over 206 million people living in Nigeria (Source: Nigeria Population (2021) - Worldometer), it is evident that food is one of the most critical factors in the sustenance of its people and economy. Over the years, the country has noticed a decrease in the rate of food production and an increase in the rate of food importation. This is primarily due to an increase in the cost of local production and a shift of focus to Crude Oil as the major source of revenue since its discovery.
Although the Nigerian government, in recent years, has placed restrictions on the importation of certain kinds of food, local farmers are still in stiff competition to meet up with the demands and taste of the Nigerian people.
In November 2020, a team of 4 (myself included) decided to address the concern around agriculture in the SauceCode Hackathon. You can read the UI/UX case study for this project here.
Note: I will be using the words investment and capital interchangeably.
The inability of farmers to easily access funds for their capital-intensive business which threatens its sustainability.
AgroFarm is a platform that connects farmers and customers together for the purpose of raising interest-bearing capital for farmers. This interest (or return on investment) will be shared between the service providers and the investors (customers) at an agreed rate.
4 weeks
After scoping out the basic features, I began to design the database using Dbdiagram.io. But before then, I asked myself some questions.
In answering these questions, I came up with the schema as seen in Fig 1 below; creating tables and fields before creating the relationships between tables. I decided to use a relational (SQL) database (PostgreSQL) to create standardization, avoid duplication and data integrity, to mention a few. (You may argue that MongoDB provides for the following but NoSQL databases, in general, serves a purpose quite different from SQL databases).
Fig 1: Database schema
Users are categorized into 3- Customers, Farmers and Service provider.
Service Provider refers to the company providing the platform, and by extension, its staff. It is the middleman between the customers and farmers, liaising with both sides to ensure ease of use and smooth operations on the app. It can also approve or reject investment requests from farmers.
Farmers are the users who can make request for investment for their businesses.
Customers are the users who invest in approved and available farm businesses.
Fig 2: User flow for farmers
This project was my first attempt at building an agritech solution. While thinking about the architecture, I had to think about what exactly was my expectation was concerning
With the help of my mentor who works in the fintech sector, I was able to scope out what I wanted to achieve.
1) No one starts a project without an objective. The design thinking (solution architecting) phase is key because it helps to:
2) I learnt how to integrate into a payment processor. Read my article about integrating multiple payment processors here.
3) Ask for help when you're stuck. If I didn't reach out to people I knew had solutions to the challenges I had, it would've taken a much longer time to break the phase of the implementation that needed it.
4) A challenge makes you better. My team ranked top 20 in the hackathon and I'm glad I decided to opt-in. I'm looking forward to more challenges and wins in the near future.
Image credits
Cover image and Fig 2 by Emmanuel Okononfua
If you like this article, feel free to comment and share. You can also reach out to me on Twitter | LinkedIn | Github
Ciao👋🏼