<?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: Ronak Mahajan</title>
    <description>The latest articles on DEV Community by Ronak Mahajan (@ronak1311).</description>
    <link>https://dev.to/ronak1311</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%2F4083300%2Fc12f9043-803d-4e02-be9e-93013cc5c31a.jpeg</url>
      <title>DEV Community: Ronak Mahajan</title>
      <link>https://dev.to/ronak1311</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ronak1311"/>
    <language>en</language>
    <item>
      <title>The Final Boss of Flutter: Surviving the Signed .aab Build</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Fri, 04 Sep 2026 15:31:47 +0000</pubDate>
      <link>https://dev.to/ronak1311/the-final-boss-of-flutter-surviving-the-signed-aab-build-243b</link>
      <guid>https://dev.to/ronak1311/the-final-boss-of-flutter-surviving-the-signed-aab-build-243b</guid>
      <description>&lt;p&gt;Generating that signed app-release.aab feels like defeating the final boss of mobile development. I’m currently building Sprout Atlas (an AI produce scanner and field guide) for the Shipaton 2026 NextGen track, and getting the release bundle ready was intimidating.&lt;/p&gt;

&lt;p&gt;After completely rewiring the backend to use Z.ai’s GLM models for highly accurate visual scanning, I had to face the Gradle build system. Configuring key.properties, generating the upload-keystore.jks file with keytool, and securely passing the alias and passwords into the Android build.gradle file is a true Flutter rite of passage.&lt;/p&gt;

&lt;p&gt;Running flutter build appbundle and seeing a successful exit code without a single Java exception is the best feeling in the world. Next stop: Google Play Console testing track!&lt;/p&gt;

</description>
      <category>shipaton</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>I skipped 5 days of school to build an AI app. Here is what a real hackathon sprint looks like. 🚀</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Sun, 30 Aug 2026 07:36:00 +0000</pubDate>
      <link>https://dev.to/ronak1311/i-skipped-5-days-of-school-to-build-an-ai-app-here-is-what-a-real-hackathon-sprint-looks-like-lfi</link>
      <guid>https://dev.to/ronak1311/i-skipped-5-days-of-school-to-build-an-ai-app-here-is-what-a-real-hackathon-sprint-looks-like-lfi</guid>
      <description>&lt;p&gt;Building a full-stack mobile app by yourself is hard. Building it for a major hackathon like Shipaton 2026 (NextGen track) while trying to manage a normal student schedule? Almost impossible.&lt;/p&gt;

&lt;p&gt;Last week, I looked at my timeline for Sprout Atlas—an AI-powered botanical guide and produce scanner—and realized I was running out of runway. The RevenueCat paywalls needed wiring, the Gemini AI vision prompts needed fine-tuning, and the UI was only half done.&lt;/p&gt;

&lt;p&gt;So, I made a tough call: I bunked 5 days of school to go completely off the grid and code.&lt;/p&gt;

&lt;p&gt;Here is what I learned from a 5-day solo code sprint:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It is not a movie montage.&lt;br&gt;
There is this romanticized idea of hacking away in a dark room with a hoodie on, typing at light speed. The reality? I spent 60% of my time reading documentation, fighting with Google Cloud JSON keys, and figuring out why a Flutter widget was overflowing by 2 pixels.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need non-negotiable boundaries.&lt;br&gt;
It is easy to burn out in 48 hours if you only eat junk food and stare at a screen. Even while skipping school, I forced a strict rule on myself: I still had to do 2 hours of pure math study every single day. No exceptions. Forcing my brain to switch contexts from Dart code to mathematics actually kept my mind sharper and prevented coding fatigue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Momentum is everything.&lt;br&gt;
By day 3, I didn't have to spend 30 minutes figuring out where I left off. All the logic, the state management, and the architecture were loaded into my short-term memory. I built the entire freshness scanner UI and the daily quiz feature in a fraction of the time it usually takes me.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Would I recommend skipping a week of school to everyone? Probably not. But sometimes, when you are building something you truly believe in, you have to engineer your own focus time.&lt;/p&gt;

&lt;p&gt;Now, back to the code. We ship soon! 🌱&lt;/p&gt;

</description>
      <category>shipaton2026</category>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The .aab Trap: Why my "Final" Android Release Build wasn't final at all 😅</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Sun, 30 Aug 2026 07:34:23 +0000</pubDate>
      <link>https://dev.to/ronak1311/the-aab-trap-why-my-final-android-release-build-wasnt-final-at-all-o4f</link>
      <guid>https://dev.to/ronak1311/the-aab-trap-why-my-final-android-release-build-wasnt-final-at-all-o4f</guid>
      <description>&lt;p&gt;There is a very specific rush of dopamine you get when you finally configure your keystores, set up your environment secrets, run ./gradlew bundle Release, and see that app-release.aab file pop out.&lt;/p&gt;

&lt;p&gt;Yesterday, I hit that milestone with Sprout Atlas (my AI produce scanner for the Shipaton hackathon). I downloaded the signed App Bundle from my Antigravity IDE workspace. I was ready to upload it to the Play Console. I felt like a deployment genius.&lt;/p&gt;

&lt;p&gt;Then, I installed the release build on my physical device.&lt;/p&gt;

&lt;p&gt;Within 30 seconds of opening the app, the illusion shattered.&lt;/p&gt;

&lt;p&gt;The Patrick Hand font I used for the daily quizzes looked slightly misaligned on smaller screens.&lt;/p&gt;

&lt;p&gt;The Shantell Sans typography on the Sprout Atlas Pro paywall (powered by RevenueCat) didn't have enough contrast against the background colors.&lt;/p&gt;

&lt;p&gt;The visual layout for the chemical washing instructions felt too cramped when reading it on a real phone.&lt;/p&gt;

&lt;p&gt;The Takeaway&lt;br&gt;
I had fallen into the classic developer trap: letting the excitement of backend configuration and CI/CD pipelines blind me to the actual User Experience. I was so focused on successfully generating the signed binary that I forgot the most important rule of frontend development: Test your UI on physical devices before you even think about production builds.&lt;/p&gt;

&lt;p&gt;I deleted the .aab file, went back to the Flutter code, and spent the next three hours tweaking padding, fonts, and container constraints.&lt;/p&gt;

&lt;p&gt;Has anyone else celebrated a "final build" only to immediately jump back into the code? Let me know I'm not the only one! 👇&lt;/p&gt;

</description>
      <category>android</category>
      <category>buildinpublic</category>
      <category>shipaton2026</category>
      <category>ai</category>
    </item>
    <item>
      <title>The Social Media Trap: Spending an Entire Day Creating Content Instead of Coding 🙃</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Wed, 26 Aug 2026 02:53:19 +0000</pubDate>
      <link>https://dev.to/ronak1311/the-social-media-trap-spending-an-entire-day-creating-content-instead-of-coding-5b8g</link>
      <guid>https://dev.to/ronak1311/the-social-media-trap-spending-an-entire-day-creating-content-instead-of-coding-5b8g</guid>
      <description>&lt;p&gt;We've all been there during a hackathon or indie project build. You tell yourself, "I'll just spend an hour drafting social media content for next week so I can clear my schedule and focus 100% on coding."&lt;/p&gt;

&lt;p&gt;Fast forward 10 hours, and you haven't touched a single line of code, opened your editor, or fixed a single backend bug.That was exactly my entire yesterday while building Sprout Atlas for Shipaton 2026.&lt;/p&gt;

&lt;p&gt;The Content Creation Black Hole&lt;br&gt;
Building in public is an incredible motivator, but yesterday it completely hijacked my dev workflow. I spent the entire day in design tools and text editors writing, formatting, and scheduling posts for X, LinkedIn, Dev.to, and Instagram:&lt;/p&gt;

&lt;p&gt;Designing carousel slides and visual cards.&lt;/p&gt;

&lt;p&gt;Crafting campaign descriptions and post copy.&lt;/p&gt;

&lt;p&gt;Editing short-form video scripts and video clips.&lt;/p&gt;

&lt;p&gt;Setting up content buckets so I wouldn't have to worry about posting next week.&lt;/p&gt;

&lt;p&gt;By the time I closed my laptop last night, I realized something sobering: I did absolutely zero work on Sprout Atlas itself. No feature updates, no bug fixes, no database tweaks. Just marketing assets.&lt;/p&gt;

&lt;p&gt;The Hidden Benefit&lt;br&gt;
At first, it felt like a wasted day. But stepping back, setting up an entire week's worth of content in advance actually gives me a huge advantage:&lt;/p&gt;

&lt;p&gt;Zero Context Switching: I won't have to break my coding flow next week to stop and figure out what to post on social media.&lt;/p&gt;

&lt;p&gt;Clear Brainspace: My mind is completely free to dive deep into Flutter layouts, Firestore queries, and finishing the core app features.&lt;/p&gt;

&lt;p&gt;Consistency on Autopilot: The build-in-public train keeps moving while I stay locked in the dev studio.&lt;/p&gt;

&lt;p&gt;Marketing is a real part of indie hacking, but code is what actually ships the product. With all the social posts locked and loaded, it's time to get back into the IDE and finish building.&lt;/p&gt;

&lt;p&gt;Have you ever gotten trapped spending a full day on docs or marketing instead of writing code? How do you balance building vs. sharing? Drop your thoughts below! 💻🔥&lt;/p&gt;

</description>
      <category>shipaton</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Typing "Brocoli" at 5 PM: Building Typo-Tolerant Search on Mobile</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Mon, 24 Aug 2026 10:45:59 +0000</pubDate>
      <link>https://dev.to/ronak1311/typing-brocoli-at-5-pm-building-typo-tolerant-search-on-mobile-2mme</link>
      <guid>https://dev.to/ronak1311/typing-brocoli-at-5-pm-building-typo-tolerant-search-on-mobile-2mme</guid>
      <description>&lt;p&gt;Mobile keyboards are prone to typos, especially in busy grocery aisles. I walked through refactoring our Firestore search queries and client-side logic so queries like "brocoli" or "avcado" instantly resolve to the correct botanical entries without throwing empty states.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
      <category>shipaton</category>
    </item>
    <item>
      <title>Stop Showing Users Textbooks: Redesigning Sprout Atlas Data Cards</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Mon, 24 Aug 2026 10:38:04 +0000</pubDate>
      <link>https://dev.to/ronak1311/stop-showing-users-textbooks-redesigning-sprout-atlas-data-cards-23ge</link>
      <guid>https://dev.to/ronak1311/stop-showing-users-textbooks-redesigning-sprout-atlas-data-cards-23ge</guid>
      <description>&lt;p&gt;My first UI iteration for Sprout Atlas crammed entire botanical profiles into single scroll views. It was a disaster. In this post, I break down how I refactored heavy food safety data into modular, card-based layouts using clean typography and strict spacing rules.&lt;/p&gt;

</description>
      <category>shipaton</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>When Local Environments Lie: How I Survived Firebase Sandbox Glitches</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Mon, 24 Aug 2026 10:30:51 +0000</pubDate>
      <link>https://dev.to/ronak1311/when-local-environments-lie-how-i-survived-firebase-sandbox-glitches-5gno</link>
      <guid>https://dev.to/ronak1311/when-local-environments-lie-how-i-survived-firebase-sandbox-glitches-5gno</guid>
      <description>&lt;p&gt;When Local Environments Lie: How I Survived Firebase Sandbox Glitches&lt;/p&gt;

&lt;p&gt;Setting up Firebase for Sprout Atlas seemed easy until the local sandbox environment decided to stop processing authentication states and data syncs. When your testing environment breaks, print statements become your best friend. Here's how I isolated the pipeline failures and got our data layer running reliably again.&lt;/p&gt;

</description>
      <category>shipaton</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Integration Nightmare: Fighting RevenueCat, Firebase, and Broken Sandboxes While Building Sprout Atlas 🛠️</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Sun, 23 Aug 2026 13:22:51 +0000</pubDate>
      <link>https://dev.to/ronak1311/the-integration-nightmare-fighting-revenuecat-firebase-and-broken-sandboxes-while-building-5619</link>
      <guid>https://dev.to/ronak1311/the-integration-nightmare-fighting-revenuecat-firebase-and-broken-sandboxes-while-building-5619</guid>
      <description>&lt;p&gt;If you're following my build-in-public journey for Sprout Atlas and the RevenueCat Shipaton 2026, you know the UI design sprint went smoothly last week. But this week? The codebase decided to humble me.&lt;/p&gt;

&lt;p&gt;My mission was simple: wire up the RevenueCat SDK for frictionless subscription paywalls and hook everything into Firebase for multi-lingual search data and user states.&lt;/p&gt;

&lt;p&gt;It turned into a multi-day debugging marathon. Here is a look at the trenches.&lt;/p&gt;

&lt;p&gt;The Problem: When Sandboxes Break&lt;br&gt;
While the RevenueCat integration eventually fell into place thanks to their clean documentation, the real villain of the week was Firebase. Specifically, trying to get the Firebase sandbox environment to behave properly.&lt;/p&gt;

&lt;p&gt;Instead of smooth local testing, I hit a wall of silent failures, authentication quirks, and sandbox environments that simply refused to sync or simulate live triggers correctly. When your test environment breaks, you're essentially flying blind—relying on print statements, raw prayers, and endless StackOverflow dives to figure out if your code is wrong or if the sandbox is just ghosting you.&lt;/p&gt;

&lt;p&gt;What I Learned From the Chaos&lt;br&gt;
Test Environments Lie: Never fully trust local emulators or sandbox setups without verifying payload structures manually. When the Firebase sandbox acts up, sometimes you have to strip it back to bare-bones API calls to find where the pipeline is choking.&lt;/p&gt;

&lt;p&gt;SDK Conflicts Will Test Your Patience: Combining third-party billing SDKs like RevenueCat with real-time backend databases requires meticulous dependency management. One version mismatch can cascade into a complete build failure.&lt;/p&gt;

&lt;p&gt;Persistence Over Panic: Every developer knows the sinking feeling of staring at a broken console log at 2 AM. Stepping away, breaking down the network requests packet by packet, and isolating the failure point is the only way through.&lt;/p&gt;

&lt;p&gt;Moving Forward&lt;br&gt;
After a lot of coffee and stubborn refactoring, the pipeline is finally secure, the subscriptions are wired, and Sprout Atlas is back on track.&lt;/p&gt;

&lt;p&gt;If you've ever spent an entire day fighting a broken sandbox environment or a rogue SDK, drop a comment below. Misery loves company, and we've got a hackathon to finish! 💻🔥&lt;/p&gt;

</description>
      <category>shipaton</category>
      <category>buildinpublic</category>
      <category>webdev</category>
      <category>revenuecat</category>
    </item>
    <item>
      <title>One Week, One Vision: Designing the UI/UX Core of Sprout Atlas</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Sat, 22 Aug 2026 03:55:23 +0000</pubDate>
      <link>https://dev.to/ronak1311/one-week-one-vision-designing-the-uiux-core-of-sprout-atlas-2aki</link>
      <guid>https://dev.to/ronak1311/one-week-one-vision-designing-the-uiux-core-of-sprout-atlas-2aki</guid>
      <description>&lt;p&gt;This past week has been an absolute sprint. If you've been following along with my journey for the RevenueCat Shipaton 2026, you know that Sprout Atlas isn't just another food app—it's an AI-powered ecosystem designed to eliminate market anxiety, track produce freshness, and make nutritional data instantly accessible.&lt;/p&gt;

&lt;p&gt;While much of the underlying infrastructure involves setting up Firestore multi-lingual search queries and integrating subscription paywalls, this week was entirely dedicated to one critical milestone: nailing the product design and interface architecture.&lt;/p&gt;

&lt;p&gt;What We Solved This Week&lt;br&gt;
Information Hierarchy &amp;amp; Jargon Removal:&lt;br&gt;
Users shouldn't need a food-science degree to know how to store a vegetable. The UI architecture was restructured to present bite-sized, card-based guidance covering origins, storage, and safety protocols instantly.&lt;/p&gt;

&lt;p&gt;Multi-Tab Search and Navigation Flow:&lt;br&gt;
Optimizing the 4-tab core architecture to seamlessly switch between botanical ingredients, step-by-step growing guides, and daily quizzes—all powered by a typo-tolerant search layout.&lt;/p&gt;

&lt;p&gt;Visual Freshness &amp;amp; Storage Logic:&lt;br&gt;
Designing clear categorical layouts that separate counter items from refrigerated goods, directly targeting food waste and consumer guesswork.&lt;/p&gt;

&lt;p&gt;The Build Continues&lt;br&gt;
Turning raw food science and complex data models into a clean, human-centered mobile experience has been an incredible technical challenge. The architecture is locked, the design system is cohesive, and the core features are primed for scale.&lt;/p&gt;

&lt;p&gt;If you're building something cool for Shipaton 2026, drop a link in the comments—let's connect and ship it! 💻🔥&lt;/p&gt;

</description>
      <category>shipaton</category>
      <category>buildinpublic</category>
      <category>uiux</category>
    </item>
    <item>
      <title>The Science Behind Sprout Atlas: Why We Buy Blind at the Market</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Wed, 19 Aug 2026 10:58:35 +0000</pubDate>
      <link>https://dev.to/ronak1311/the-science-behind-sprout-atlas-why-we-buy-blind-at-the-market-3c0g</link>
      <guid>https://dev.to/ronak1311/the-science-behind-sprout-atlas-why-we-buy-blind-at-the-market-3c0g</guid>
      <description>&lt;p&gt;In my previous post, I shared the mission behind Sprout Atlas—an interactive produce field guide and AI scanner I’m building for RevenueCat’s #Shipaton 2026.&lt;/p&gt;

&lt;p&gt;Today, I want to explore the real food science that led me to create Sprout Atlas, and why traditional grocery shopping leaves almost all of us buying in the dark.&lt;/p&gt;

&lt;p&gt;🔬 1. The Chemistry of What's Actually on Our Food&lt;br&gt;
When you pick up a piece of produce at a market stall or grocery aisle, your eyes only see color and shape. But beneath the surface, there are three hidden factors that determine whether that item is truly fresh and safe:&lt;/p&gt;

&lt;p&gt;A. The Synthetic Wax Barrier&lt;br&gt;
The Reality: Many commercial fruits (especially apples, pears, and citrus) are coated with synthetic or petroleum-derived waxes to lock in moisture and artificially extend shelf life on store shelves for weeks.&lt;/p&gt;

&lt;p&gt;The Problem: Wax creates an airtight hydrophobic seal that traps pre-harvest chemical residues underneath it.&lt;/p&gt;

&lt;p&gt;B. Natural Sunlight vs. Artificial Ripening&lt;br&gt;
The Reality: Fruits like mangoes and bananas naturally ripen on the branch through sunlight and natural internal ethylene gas.&lt;/p&gt;

&lt;p&gt;The Problem: In unregulated local markets, produce is often harvested prematurely and force-ripened overnight using chemicals like industrial calcium carbide (which releases acetylene gas). This leaves the outside looking yellow while the inside remains unripe, hard, and devoid of natural sugars.&lt;/p&gt;

&lt;p&gt;C. The Tap Water Myth&lt;br&gt;
The Reality: Most modern agricultural sprays are formulated to be rain-fast (water-resistant) so rain doesn't wash them away in the field.&lt;/p&gt;

&lt;p&gt;The Problem: When you rinse vegetables with plain tap water in your kitchen sink, the water simply beads up and slides off, removing less than 20% of surface residues.&lt;/p&gt;

&lt;p&gt;🌿 2. How Sprout Atlas Solves This for 500+ Items&lt;br&gt;
Food chemistry shouldn't be complicated or locked away in academic journals. Sprout Atlas puts actionable food intelligence directly into your pocket:&lt;/p&gt;

&lt;p&gt;🧼 The 3-Minute Science-Backed Rinsing Guide&lt;br&gt;
Instead of guessing, Sprout Atlas provides step-by-step cleaning protocols based on food chemistry research:&lt;/p&gt;

&lt;p&gt;The Alkaline Soak: Submerging produce in cold water with 1 teaspoon of baking soda (sodium bicarbonate) for 3–5 minutes creates a mild alkaline environment that degrades up to 90% of common surface residues.&lt;/p&gt;

&lt;p&gt;Custom Protocols: Delicate berries, leafy greens, root vegetables, and thick-skinned squashes all receive custom handling instructions tailored to their surface structure.&lt;/p&gt;

&lt;p&gt;🔍 Point-of-Purchase Ripeness Indicators&lt;br&gt;
We built sensory checklists for over 500 fruits and vegetables:&lt;/p&gt;

&lt;p&gt;Touch &amp;amp; Elasticity: Understanding the difference between natural skin yield and mushy internal rot.&lt;/p&gt;

&lt;p&gt;Stem Aromas: Identifying natural sweet floral scents versus chemical or fermented odors.&lt;/p&gt;

&lt;p&gt;Acoustic &amp;amp; Weight Checks: How to judge water content in melons and gourds by weight and sound.&lt;/p&gt;

&lt;p&gt;🚀 3. Building for Food Transparency&lt;br&gt;
I’m 13 years old and developing Sprout Atlas in public from Pune, India.&lt;/p&gt;

&lt;p&gt;My goal is to give every family the tools to make informed, healthy, and safe food decisions every time they step into a market.&lt;/p&gt;

&lt;p&gt;Question for the Community:&lt;br&gt;
👇 How do you currently wash and store your produce at home? Do you use a specific soaking method, or just cold tap water?&lt;/p&gt;

&lt;p&gt;Let me know your thoughts in the comments below!&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>shipaton</category>
    </item>
    <item>
      <title>I'm 13 and Building an AI Produce Scanner for Local Markets: Meet Sprout Atlas</title>
      <dc:creator>Ronak Mahajan</dc:creator>
      <pubDate>Tue, 18 Aug 2026 13:05:25 +0000</pubDate>
      <link>https://dev.to/ronak1311/im-13-and-building-an-ai-produce-scanner-for-local-markets-meet-sprout-atlas-2f76</link>
      <guid>https://dev.to/ronak1311/im-13-and-building-an-ai-produce-scanner-for-local-markets-meet-sprout-atlas-2f76</guid>
      <description>&lt;p&gt;Hey DEV Community! 👋 &lt;/p&gt;

&lt;p&gt;I'm Ronak, a 13-year-old student builder from Pune, India. &lt;/p&gt;

&lt;p&gt;Over the past few weeks, I’ve been building &lt;strong&gt;Sprout Atlas&lt;/strong&gt;—an interactive produce field guide and AI-powered camera scanner designed to solve a very real, everyday problem at local markets.&lt;/p&gt;

&lt;p&gt;Here is the story behind why I’m building it, the architecture under the hood, and what I’ve learned so far building in public for RevenueCat’s &lt;strong&gt;#Shipaton 2026&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛒 The Problem: Buying Blind at the Mandi
&lt;/h2&gt;

&lt;p&gt;In India and many parts of the world, millions of families buy fresh produce at local markets (&lt;em&gt;mandis&lt;/em&gt;) every single week. But when you buy from a stall, zero information changes hands beyond price and weight.&lt;/p&gt;

&lt;p&gt;Shoppers are constantly left wondering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Is this fruit actually fresh, or was it harvested days ago?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Is this glossy apple coated in synthetic wax?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Were these bananas force-ripened with chemicals like calcium carbide?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How do I safely rinse away pesticide residues before cooking?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because of this uncertainty, most people fall into what I call the &lt;strong&gt;"4-Item Diet Trap"&lt;/strong&gt;: sticking strictly to &lt;strong&gt;Apple, Banana, Tomato, and Potato&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Dozens of rich, seasonal local vegetables sit right on the cart, but go unbought because search engines fail when you don't even know what name to type into Google.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌿 What Sprout Atlas Does
&lt;/h2&gt;

&lt;p&gt;Sprout Atlas meets the shopper directly at the point of purchase:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;500+ Botanical Produce Guides:&lt;/strong&gt; Comprehensive breakdowns of familiar and rare produce—what parts are edible, seasonality, taste profiles, and cooking preparation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Lingual Alias Index:&lt;/strong&gt; In India, a single vegetable can have 5+ regional names (e.g., &lt;em&gt;Suran / Jimikand / Elephant Foot Yam&lt;/em&gt;). The database maps phonetic regional names across Marathi, Hindi, Tamil, and Bengali.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Science-Backed Pesticide Rinsing Guides:&lt;/strong&gt; Plain tap water removes less than 20% of hydrophobic chemical residues. We provide simple, step-by-step soaking protocols (e.g., 1 tsp baking soda in cold water for 3–5 minutes) to degrade surface residues by up to 90%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Point-of-Purchase AI Camera Scanner:&lt;/strong&gt; Point your phone camera at produce to assess visible freshness and flag artificial ripening signals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Labs:&lt;/strong&gt; Includes a conversational AI Nutrition Tutor and a daily "Rainbow Challenge" tracker to encourage diverse eating.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💻 Tech Stack &amp;amp; Architecture
&lt;/h2&gt;

&lt;p&gt;Here is the stack and workflow I'm using to build Sprout Atlas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design &amp;amp; UI System:&lt;/strong&gt; Built with a custom "Field Guide" design system—warm vintage paper backdrops (&lt;code&gt;#FAF6E9&lt;/code&gt;), deep forest ink (&lt;code&gt;#233022&lt;/code&gt;), responsive 9:16 mobile frames, and hand-drawn SVG vector doodles for produce items.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prototyping &amp;amp; Code:&lt;/strong&gt; Semantic HTML5, CSS Grid/Flexbox, and vanilla JavaScript for snappy, lightweight performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI &amp;amp; Computer Vision:&lt;/strong&gt; Google AI Studio / Gemini API for multimodal image classification, ripeness detection, and conversational nutrition tutoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monetization Engine:&lt;/strong&gt; Integrating the &lt;strong&gt;RevenueCat SDK&lt;/strong&gt; to handle freemium entitlement logic (3 free AI scans/week + unlimited Pro tier).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ The Biggest Challenges So Far
&lt;/h2&gt;

&lt;p&gt;Building this as a 13-year-old solo dev has been an intense learning curve. The top three problems I've faced:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One-Handed Market UX:&lt;/strong&gt; Nobody at a vegetable stall has two hands free—you’re holding a shopping bag in one hand. We had to ruthlessly eliminate buttons so the entire scanning and safety check takes 1 tap and under 2 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cosmetic Blemishes vs. Real Spoilage:&lt;/strong&gt; In organic local markets, surface spots often mean &lt;em&gt;less&lt;/em&gt; pesticide spray, not bad fruit! Training our AI vision logic to distinguish harmless cosmetic scars from actual microbial rot was crucial to avoid causing food waste.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fighting AI Code Bloat:&lt;/strong&gt; AI coding assistants generate boilerplate fast, but they love adding 10 unnecessary buttons and bloated state. I've learned that developer taste and &lt;em&gt;subtraction&lt;/em&gt; matter far more than prompt speed.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚀 What’s Next?
&lt;/h2&gt;

&lt;p&gt;I’m participating in RevenueCat's &lt;strong&gt;#Shipaton 2026&lt;/strong&gt; under the &lt;strong&gt;NextGen&lt;/strong&gt; and &lt;strong&gt;#BuildInPublic&lt;/strong&gt; tracks. Over the next few weeks, I’ll be sharing our live camera testing results, database benchmarks, and paywall experiments.&lt;/p&gt;

&lt;h3&gt;
  
  
  I’d love your feedback!
&lt;/h3&gt;

&lt;p&gt;If you were building an on-device camera scanner for messy, outdoor lighting environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What client framework would you choose (Flutter vs. React Native vs. Swift)?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How would you optimize image compression before hitting the vision model?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me know in the comments below! 👇&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Follow my build journey on Twitter/X: [@RonakMahajan13] | Project: Sprout Atlas 🌱&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>shipaton</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
