EUNICE M. Get in Touch
Back to Projects

Full Stack · AgriTech

Kilimo Guru

A smart-agriculture platform built for Kenyan farmers: farm and crop records, weather and drought alerts, a produce marketplace with real market prices, M-Pesa payments, and expert advisory content — with an offline mode for the many places where connectivity can't be assumed.

Django Python Django REST Framework M-Pesa Docker PWA SQLite

Demo status: not currently hosted, but the repository ships a Dockerfile and detailed installation and feature documentation, so it stands up locally in a few commands. Setup steps are at the bottom of this page.

Platform scope

A broad platform, deliberately — the value to a farmer comes from the pieces working together.

9 Feature domains Registry through analytics
Docker Packaging Reproducible environment
M-Pesa Payments Mobile money built in
PWA Offline mode Syncs when reconnected
REST API layer Dedicated api app
Swahili Localisation Content in local languages

The Problem

A smallholder farmer in Kenya makes decisions with incomplete information: what to plant and when, whether rain is coming, what maize is fetching at the nearest market this week, and whether a spot on a leaf is worth worrying about. Each answer lives somewhere different, and most of those places assume a good internet connection.

Kilimo Guru puts the farm record, the forecast, the market price and the advice in one platform, and keeps working when the connection drops.

My Role

Sole developer. I designed the domain model across farmer registry, crops, marketplace, advisory and analytics, built the Django apps and REST layer, and containerised the project with documentation thorough enough for someone else to run it.

  • Domain modelling
  • Django apps & REST API
  • M-Pesa payment flow
  • Offline/PWA strategy
  • Docker packaging & docs

The modules

Each app owns one part of a farmer's working life.

accounts

Farmer registration, profiles and GPS-mapped farm records.

crops

Planting calendars by region, yield tracking and rotation planning.

advisory

Expert articles, consultations and e-learning content.

analytics

Yield forecasts, profitability reports and market trends.

api

REST serializers and endpoints for the mobile and offline clients.

marketplace

Produce listings, buyer matching and real-time market prices.

weather

Forecasts, drought and flood warnings, irrigation advice.

finance

M-Pesa payments, farm credit scoring and crop insurance.

Dockerfile

One-command environment so setup isn't the barrier to trying it.

Engineering decisions

Offline is a requirement, not a feature

The target user regularly has no signal. Building as a PWA with local storage and sync-on-reconnect means the app degrades to slower, not broken.

M-Pesa as the default rail

Card payments would exclude most of the intended users. Mobile money is how this market actually pays, so it's the primary integration rather than an alternative.

Documentation as a deliverable

The repo carries installation, feature, structure and completion documents. On a platform this broad, an undocumented feature is functionally a missing one.

Local languages in the content model

Advisory content supports Swahili and local languages at the data layer, so translation isn't a UI afterthought.

Separate API app

Serializers and endpoints live in their own app rather than scattered across feature apps, which keeps one clear contract for every client.

Containerised early

A Dockerfile from the start means the same environment locally and on any host, which matters most on a project with this many moving integrations.

Run it locally

The fastest way to see it working end to end.

Backend — Django

git clone https://github.com/Eunice-ctrlz/KILIMOGURU.git
cd KILIMOGURU
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

Runs on localhost:8000. The repo's installation guide covers the optional integrations.

Want a walkthrough of the code?

I'm happy to talk through the architecture or the decisions above — and I build systems like this for other people too.