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
- 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.
- 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.
- Deploy early. Even a broken deploy teaches you more than a perfect local app.
- 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
- ๐ My Portfolio: saniya.me
- ๐ป GitHub: github.com/Saniya1207 "Check out the code: github.com/Saniya1207/kisanX"
- ๐ผ LinkedIn: Saniya Farooqui
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)