DEV Community

Cover image for We Built KisanX Together โ€” Here's the Side Nobody Talked About Yet ๐ŸŒพ
Saniya Farooqui
Saniya Farooqui

Posted on • Edited on

We Built KisanX Together โ€” Here's the Side Nobody Talked About Yet ๐ŸŒพ

How Aniket and I Built KisanX โ€” A Full-Stack Agricultural Marketplace (PHP + MERN + React Native)

By Saniya Farooqui | Full-Stack Developer | Mumbai | saniya.me


The Problem We Wanted to Solve

Indian farmers lose a significant portion of their income to middlemen every single day. They have no direct access to buyers, no way to discover fair prices, and no digital platform built specifically for them.

As Computer Engineering students at Patkar-Varde College, Mumbai, my classmate Aniket Dubey and I wanted to build something real โ€” not just a todo app or a weather app. We wanted to build something that could actually matter for the people around us.

That's how KisanX was born.


What is KisanX?

KisanX is a full-stack, Direct-to-Consumer (D2C) agricultural marketplace that connects Indian farmers directly with buyers โ€” cutting out the middlemen entirely.

It has two parts:

  • A web application (PHP + MySQL) โ€” the complete marketplace
  • A mobile application (MERN + React Native) โ€” for farmers and buyers on the go

We split the project by domain:

Developer Module
Saniya Farooqui (me) Entire customer/buyer side โ€” web + mobile
Aniket Dubey Entire farmer side โ€” web + mobile
Both Architecture, planning, homepage (index.php), deployment

This division meant each of us owned a complete, end-to-end vertical โ€” not just frontend or backend, but the full stack for our respective user type.


What I Built โ€” The Customer Side

My responsibility was the complete buyer experience, from registration to checkout to order tracking โ€” both on web and mobile.

Phase 1 โ€” Web App (PHP + MySQL)

I built every piece of the customer journey on the web:

Backend logic (PHP):

  • register.php โ€” Secure customer registration with password hashing and MySQL storage
  • login.php โ€” Session-based authentication
  • checkout.php โ€” Full multi-step order processing backend
  • wishlist.php โ€” Wishlist save/remove with database sync
  • track.php โ€” Real-time order tracking by status
  • header.php / footer.php โ€” Shared layout components used across the entire site

Frontend (HTML/CSS/JS):

  • Customer registration and login UI
  • User dashboard โ€” personalized landing page after login
  • About page โ€” platform story and mission
  • Full UI/UX animations across all customer-facing pages

Biggest challenge: Designing the checkout.php flow โ€” it had to handle multi-step form state, order creation, cart clearance, and confirmation โ€” all without a JavaScript framework, just clean PHP and MySQL.


Phase 2 โ€” Mobile App (React Native + Node.js + MongoDB)

The mobile app was built with React Native (Expo) for the frontend and Node.js + MongoDB for the backend API.

I built the entire buyer-side mobile experience:

Screens I coded:

  • register.tsx / login.tsx / forgot-password.tsx โ€” Full authentication flow with JWT
  • customer/index.tsx โ€” Buyer dashboard
  • orders.tsx โ€” Order history with API response mapping
  • cart.tsx โ€” Cart with quantity updates and reward points calculation
  • wishlist.tsx โ€” Wishlist with add/remove and cross-screen sync
  • profile.tsx / edit-profile.tsx โ€” Profile management
  • checkout.tsx โ€” Checkout flow (with attempted Stripe integration)
  • address management โ€” Add and save delivery addresses
  • Product search with category filtering

State management I implemented:

  • CartContext.tsx โ€” Global cart state across all screens
  • WishlistContext.tsx โ€” Wishlist state synchronized app-wide

Toughest debugging moment: JWT token persistence. After login, the token was being dropped between screens. I traced it to incorrect async storage handling โ€” fixing it meant the user's session finally survived navigation, which unlocked the rest of the app.

Another hard one: Email. I first tried Gmail SMTP for password resets โ€” Google's security policies blocked it entirely. I researched alternatives (SendGrid, Mailgun, Brevo) and shifted to Brevo SMTP, which worked immediately.

Also on 13 March, I resolved the Android APK build โ€” Gradle 8.x compatibility issues, NDK downgrade to 26.1, C++20 linking errors in Reanimated/Worklets, and successfully generated the final app-release.apk. I also coded earnings.tsx for the farmer dashboard on that day.


What Aniket Built โ€” The Farmer Side

Aniket owned the complete farmer experience:

  • Farmer registration, authentication, and dashboard (web + mobile)
  • Product listing, multi-market pricing, inventory management
  • Order processing APIs
  • AI chatbot for farmer assistance
  • Farmer sales analytics
  • Farmer news section

Together, the two sides form one cohesive platform.


Tech Stack

Web App (PHP + MySQL):

  • PHP 8 โ€” server-side logic, routing, authentication
  • MySQL โ€” relational database, all CRUD operations
  • HTML5, CSS3, JavaScript โ€” responsive frontend
  • Session-based auth
  • Deployed on Render

Mobile App (MERN + React Native):

  • React Native with Expo โ€” cross-platform mobile
  • Node.js + Express.js โ€” REST API backend
  • MongoDB + Mongoose โ€” NoSQL database
  • JWT Authentication
  • Brevo SMTP โ€” transactional emails
  • Deployed on Render

The Avishkar Moment ๐Ÿ†

KisanX was selected and presented at the Avishkar Inter-Collegiate Research Convention, Mumbai University 2024โ€“25 โ€” one of the largest student research competitions in Maharashtra.

Presenting a project we built from scratch โ€” real code, real architecture, real deployment โ€” at a university-level research convention was a milestone for both of us.


Total Hours

Developer Web App Mobile App Total
Saniya Farooqui 200 hrs 267 hrs 467 hrs
Aniket Dubey 200 hrs 251 hrs 451 hrs

918 hours of combined effort to ship a production-ready platform.


What I Would Do Differently

  • Use TypeScript from day one โ€” it would have caught the JWT token bug in minutes
  • Integrate Stripe in a proper sandbox before building the UI around it
  • Write tests as I go, not at the end
  • Set up Docker early so deployment wouldn't be a last-minute scramble
  • Design the MongoDB schema more carefully before coding the first route

Key Takeaways for Student Developers

  1. Split by domain, not by layer. Owning the full stack for your user type (not just frontend or just backend) teaches you end-to-end thinking.
  2. Real problems, real constraints. Gmail blocked us. Stripe confused us. Gradle broke us. These are the moments that actually teach you to be a developer.
  3. Deploy early. Even a broken deploy teaches you more than a perfect local app.
  4. Collaboration is a skill. Coordinating two full-stack verticals โ€” making sure my customer API calls matched Aniket's backend schemas โ€” required constant communication and version control discipline.

Check It Out

I'm open to internships, freelance projects, and collaboration. Feel free to connect!


Built with โค๏ธ by Saniya Farooqui and Aniket Dubey โ€” Full-Stack Developers from Mumbai


Tags: #webdev #javascript #react #php #reactnative #mern #fullstack #beginners #programming #kisanx

Top comments (0)