AgroGuide
MERN platform with a Flask-served ML engine for farmers
The problem
Farmers often make crop and treatment decisions without timely, data-driven guidance. Useful signals exist — in models and public data sources — but they are not delivered through a single, accessible product.
My approach
AgroGuide combines a MERN web application with a dedicated Flask ML service. The Node/Express API owns users, auth, payments and data, and delegates prediction requests to Python — keeping each part in the language it fits best.
How it's built
- Client1
React
SPA with protected routes, forms and result views
- API2
Node.js · Express
REST endpoints, JWT auth, validation, payment flow
- Data3
MongoDB
Users, records and prediction history
- ML Service4
Flask · TensorFlow · Scikit-learn
Model inference exposed as a REST API
- External5
Third-party APIs
Real-world data feeding recommendations
Authentication
Register/login with hashed passwords and JWT-protected endpoints.
ML predictions
Inputs are validated in Node, forwarded to Flask, and results stored per user.
Payment flow
Gated premium features behind a payment step integrated into the API.
External data
Server-side integration with external APIs so keys never reach the client.
Challenges & decisions
Bridging Node and Python
Defined a small JSON contract between Express and Flask so either side can evolve independently.
Keeping the UI responsive
Handled slower inference calls with loading states and error boundaries instead of blocking the page.
Tech stack
- React
- Node.js
- Express.js
- MongoDB
- Flask
- Python
- TensorFlow
- Scikit-learn
- JWT
What I learned
- →Designing APIs between services, not just between client and server
- →Packaging ML models so they can be served behind a stable interface
- →End-to-end ownership: schema, API, UI and model integration