← All work
Full-Stack · MERN · ML2025

AgroGuide

MERN platform with a Flask-served ML engine for farmers

ClientReact
APINode.js · Express
DataMongoDB
ML ServiceFlask · TensorFlow · Scikit-learn
ExternalThird-party APIs

The problem

Farmers often decide on crops and treatments without timely, data-based advice. The useful data is out there in models and public sources, but not in one place that's easy to use.

My approach

AgroGuide puts a MERN web app in front of a Flask ML service. The Express API handles users, auth, payments and data, and passes prediction requests to Python, so each part is written in the language that suits it.

How it's built

  1. Client1

    React

    SPA with protected routes, forms and result views

  2. API2

    Node.js · Express

    REST endpoints, JWT auth, validation, payment flow

  3. Data3

    MongoDB

    Users, records and prediction history

  4. ML Service4

    Flask · TensorFlow · Scikit-learn

    Model inference exposed as a REST API

  5. 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, sent to Flask, and results saved per user.

✦

Payment flow

Premium features sit behind a payment step built into the API.

✦

External data

External APIs are called from the server so keys never reach the browser.

Challenges & decisions

Bridging Node and Python

Kept a small JSON contract between Express and Flask so I could change either side without breaking the other.

Keeping the UI responsive

Inference calls can be slow, so the UI shows loading and error states instead of freezing.

Tech stack

  • React
  • Node.js
  • Express.js
  • MongoDB
  • Flask
  • Python
  • TensorFlow
  • Scikit-learn
  • JWT

What I learned

  • →Designing APIs between two services, not just client and server
  • →Packaging ML models so they can sit behind a stable API
  • →Owning everything: schema, API, UI and model integration