Biosis API

Biosis is a platform that helps farmers manage their fertilisation schedule by reminding them on the daily basis about the amount and type of fertilisers to use, the reminder also takes into consider the weather conditions via an open weather api. It is one of my favourite projects.

Tech Stack :
Biosis API

Introduction

This project serves as the API backend for the platform and is built using cutting edge tech resulting in great maintainability and productivity

Features

This project is packed with Industry wide best practices with great attention to detail. Listing some of the best features below.

πŸ’» Infastructure As Code (IaC)

The entire infrastructure required for this project including but not limited to the Database, ECS Container, Cloud-front CDN, S3 Bucket, Custom Domains, and Private Networks has been configured through code (Terraform) which allows complete automation over infrastructure provisioning, and multiple environments can be spun up and destroyed predictably and consistently. Here is an example of provisioning the database.

πŸ€– CI/CD Automation

The project includes complete automation via GitLab CI including support for multiple environments. Whenever code is pushed on a protected branch the pipeline runs validates the terraform configuration, builds the docker image and then applies the terraform configuration.

πŸ”” Push Notifications

Push notifications are sent to the mobile client using firebase. A periodic task has been setup on the backend to send notifications everyday at a particular time to all the concerned farmers.

πŸ•ΈοΈ GraphQL APIs

The project implements GraphQL APIs to the most flexibility to the client whilst minimizing development effors. Since the entire schema is tightly controlled the client can introspect the server and get amazing autocompletion on the front-end minimizing human error.
GraphQL Schema

πŸ“… Periodic Tasks

The project uses Celery Beat and Redis for scheduling and running asynchronous periodic tasks.

☁ Easy to deploy on AWS

Can be easily deployed on AWS with the use of Terraform. Unfortunately I cannot keep this project live for a demo because it costs a considerable amount of money considering the sheer number of components in the Infastructure.