<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saniya Farooqui</title>
    <description>The latest articles on DEV Community by Saniya Farooqui (@saniya1207).</description>
    <link>https://dev.to/saniya1207</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3982502%2Fdb336091-ef96-441d-b43b-02f1fa84e206.jpeg</url>
      <title>DEV Community: Saniya Farooqui</title>
      <link>https://dev.to/saniya1207</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saniya1207"/>
    <language>en</language>
    <item>
      <title>We Built KisanX Together — Here's the Side Nobody Talked About Yet 🌾</title>
      <dc:creator>Saniya Farooqui</dc:creator>
      <pubDate>Sat, 13 Jun 2026 14:11:37 +0000</pubDate>
      <link>https://dev.to/saniya1207/how-i-built-kisanx-a-full-stack-agricultural-marketplace-57km</link>
      <guid>https://dev.to/saniya1207/how-i-built-kisanx-a-full-stack-agricultural-marketplace-57km</guid>
      <description>&lt;h1&gt;
  
  
  How Aniket and I Built KisanX — A Full-Stack Agricultural Marketplace (PHP + MERN + React Native)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;By Saniya Farooqui&lt;/strong&gt; | Full-Stack Developer | Mumbai | &lt;a href="https://www.saniya.me" rel="noopener noreferrer"&gt;saniya.me&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem We Wanted to Solve
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;As Computer Engineering students at Patkar-Varde College, Mumbai, my classmate &lt;strong&gt;Aniket Dubey&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;That's how &lt;strong&gt;KisanX&lt;/strong&gt; was born.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is KisanX?
&lt;/h2&gt;

&lt;p&gt;KisanX is a full-stack, Direct-to-Consumer (D2C) agricultural marketplace that connects Indian farmers directly with buyers — cutting out the middlemen entirely.&lt;/p&gt;

&lt;p&gt;It has two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;web application&lt;/strong&gt; (PHP + MySQL) — the complete marketplace&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;mobile application&lt;/strong&gt; (MERN + React Native) — for farmers and buyers on the go&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;We split the project by domain:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Developer&lt;/th&gt;
&lt;th&gt;Module&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Saniya Farooqui (me)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Entire customer/buyer side — web + mobile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Aniket Dubey&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Entire farmer side — web + mobile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Both&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Architecture, planning, homepage (index.php), deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built — The Customer Side
&lt;/h2&gt;

&lt;p&gt;My responsibility was the &lt;strong&gt;complete buyer experience&lt;/strong&gt;, from registration to checkout to order tracking — both on web and mobile.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1 — Web App (PHP + MySQL)
&lt;/h3&gt;

&lt;p&gt;I built every piece of the customer journey on the web:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend logic (PHP):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;register.php&lt;/code&gt; — Secure customer registration with password hashing and MySQL storage&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;login.php&lt;/code&gt; — Session-based authentication&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;checkout.php&lt;/code&gt; — Full multi-step order processing backend&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;wishlist.php&lt;/code&gt; — Wishlist save/remove with database sync&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;track.php&lt;/code&gt; — Real-time order tracking by status&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;header.php&lt;/code&gt; / &lt;code&gt;footer.php&lt;/code&gt; — Shared layout components used across the entire site&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Frontend (HTML/CSS/JS):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer registration and login UI&lt;/li&gt;
&lt;li&gt;User dashboard — personalized landing page after login&lt;/li&gt;
&lt;li&gt;About page — platform story and mission&lt;/li&gt;
&lt;li&gt;Full UI/UX animations across all customer-facing pages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Biggest challenge:&lt;/strong&gt; Designing the &lt;code&gt;checkout.php&lt;/code&gt; 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.&lt;/p&gt;




&lt;h3&gt;
  
  
  Phase 2 — Mobile App (React Native + Node.js + MongoDB)
&lt;/h3&gt;

&lt;p&gt;The mobile app was built with React Native (Expo) for the frontend and Node.js + MongoDB for the backend API.&lt;/p&gt;

&lt;p&gt;I built the &lt;strong&gt;entire buyer-side mobile experience:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screens I coded:&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;State management I implemented:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;CartContext.tsx&lt;/code&gt; — Global cart state across all screens&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;WishlistContext.tsx&lt;/code&gt; — Wishlist state synchronized app-wide&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Toughest debugging moment:&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Another hard one:&lt;/strong&gt; 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 &lt;strong&gt;Brevo SMTP&lt;/strong&gt;, which worked immediately.&lt;/p&gt;

&lt;p&gt;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 &lt;code&gt;app-release.apk&lt;/code&gt;. I also coded &lt;code&gt;earnings.tsx&lt;/code&gt; for the farmer dashboard on that day.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Aniket Built — The Farmer Side
&lt;/h2&gt;

&lt;p&gt;Aniket owned the complete farmer experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Farmer registration, authentication, and dashboard (web + mobile)&lt;/li&gt;
&lt;li&gt;Product listing, multi-market pricing, inventory management&lt;/li&gt;
&lt;li&gt;Order processing APIs&lt;/li&gt;
&lt;li&gt;AI chatbot for farmer assistance&lt;/li&gt;
&lt;li&gt;Farmer sales analytics&lt;/li&gt;
&lt;li&gt;Farmer news section&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, the two sides form one cohesive platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Web App (PHP + MySQL):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PHP 8 — server-side logic, routing, authentication&lt;/li&gt;
&lt;li&gt;MySQL — relational database, all CRUD operations&lt;/li&gt;
&lt;li&gt;HTML5, CSS3, JavaScript — responsive frontend&lt;/li&gt;
&lt;li&gt;Session-based auth&lt;/li&gt;
&lt;li&gt;Deployed on Render&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Mobile App (MERN + React Native):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Native with Expo — cross-platform mobile&lt;/li&gt;
&lt;li&gt;Node.js + Express.js — REST API backend&lt;/li&gt;
&lt;li&gt;MongoDB + Mongoose — NoSQL database&lt;/li&gt;
&lt;li&gt;JWT Authentication&lt;/li&gt;
&lt;li&gt;Brevo SMTP — transactional emails&lt;/li&gt;
&lt;li&gt;Deployed on Render&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Avishkar Moment 🏆
&lt;/h2&gt;

&lt;p&gt;KisanX was selected and presented at the &lt;strong&gt;Avishkar Inter-Collegiate Research Convention, Mumbai University 2024–25&lt;/strong&gt; — one of the largest student research competitions in Maharashtra.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;h2&gt;
  
  
  Total Hours
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Developer&lt;/th&gt;
&lt;th&gt;Web App&lt;/th&gt;
&lt;th&gt;Mobile App&lt;/th&gt;
&lt;th&gt;Total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Saniya Farooqui&lt;/td&gt;
&lt;td&gt;200 hrs&lt;/td&gt;
&lt;td&gt;267 hrs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;467 hrs&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aniket Dubey&lt;/td&gt;
&lt;td&gt;200 hrs&lt;/td&gt;
&lt;td&gt;251 hrs&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;451 hrs&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;918 hours of combined effort to ship a production-ready platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Would Do Differently
&lt;/h2&gt;

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




&lt;h2&gt;
  
  
  Key Takeaways for Student Developers
&lt;/h2&gt;

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




&lt;h2&gt;
  
  
  Check It Out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 My Portfolio: &lt;a href="https://www.saniya.me" rel="noopener noreferrer"&gt;saniya.me&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 GitHub: &lt;a href="https://github.com/Saniya1207" rel="noopener noreferrer"&gt;github.com/Saniya1207&lt;/a&gt;
"Check out the code: &lt;a href="https://github.com/Saniya1207/kisanX" rel="noopener noreferrer"&gt;github.com/Saniya1207/kisanX&lt;/a&gt;"&lt;/li&gt;
&lt;li&gt;💼 LinkedIn: &lt;a href="https://www.linkedin.com/in/saniya-farooqui-dev/" rel="noopener noreferrer"&gt;Saniya Farooqui&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm open to internships, freelance projects, and collaboration. Feel free to connect!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ by Saniya Farooqui and Aniket Dubey — Full-Stack Developers from Mumbai&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#webdev&lt;/code&gt; &lt;code&gt;#javascript&lt;/code&gt; &lt;code&gt;#react&lt;/code&gt; &lt;code&gt;#php&lt;/code&gt; &lt;code&gt;#reactnative&lt;/code&gt; &lt;code&gt;#mern&lt;/code&gt; &lt;code&gt;#fullstack&lt;/code&gt; &lt;code&gt;#beginners&lt;/code&gt; &lt;code&gt;#programming&lt;/code&gt; &lt;code&gt;#kisanx&lt;/code&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>reactnative</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
