<?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: Dishank Gupta</title>
    <description>The latest articles on DEV Community by Dishank Gupta (@dishankg).</description>
    <link>https://dev.to/dishankg</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3375112%2Fa01a9db2-c567-493d-aa59-204c4b619eef.jpeg</url>
      <title>DEV Community: Dishank Gupta</title>
      <link>https://dev.to/dishankg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dishankg"/>
    <language>en</language>
    <item>
      <title>From Dev to Dairy - Production Testing, Real Bugs, and Lessons for Fellow Vibe Coders</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Wed, 08 Oct 2025 13:30:00 +0000</pubDate>
      <link>https://dev.to/dishankg/from-dev-to-dairy-production-testing-real-bugs-and-lessons-for-fellow-vibe-coders-2d5</link>
      <guid>https://dev.to/dishankg/from-dev-to-dairy-production-testing-real-bugs-and-lessons-for-fellow-vibe-coders-2d5</guid>
      <description>&lt;h2&gt;
  
  
  The Moment of Truth
&lt;/h2&gt;

&lt;p&gt;It's September 15, 2025. I'm sitting in my office at PureDairy in Jalgaon, staring at a laptop screen showing 145 real customers in my database.&lt;/p&gt;

&lt;p&gt;Three weeks ago, this was just an idea—a crazy plan to build an ERP with zero coding experience.&lt;/p&gt;

&lt;p&gt;Now? It's real. It's working. And it's about to face the ultimate test: &lt;strong&gt;real people using it for real work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me to my team:&lt;/strong&gt; "Starting tomorrow, we're using this for everything. No more Excel."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response:&lt;/strong&gt; Cautious optimism mixed with "let's see if this actually works."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me, internally:&lt;/strong&gt; &lt;em&gt;This is either going to be amazing or a complete disaster.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0sxldn4jz0jkj4u5b1yj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0sxldn4jz0jkj4u5b1yj.png" alt="SCREENSHOT: Dashboard showing real customer data - anonymized" width="800" height="929"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How My Team Found 47 Design Flaws in 48 Hours
&lt;/h2&gt;

&lt;p&gt;I thought I'd built a great system. I'd tested everything. Or so I believed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reality check:&lt;/strong&gt; I'd tested what I THOUGHT users would do, not what they ACTUALLY do.&lt;/p&gt;

&lt;p&gt;My team became my best QA testers. Every "this doesn't work" revealed assumptions I didn't know I had. Within 48 hours, they'd found 47 issues I would never have caught testing alone.&lt;/p&gt;

&lt;p&gt;Here are the most humbling ones:&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue #1: The Search That Required Psychic Powers (Day 1, 9:00 AM)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "I can't find Mrs. Sharma's account."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Did you search for her name?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Yes. 'sharma'. Nothing shows up."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;checks database&lt;/em&gt; "It's stored as 'Sharmaa' with two A's."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Design Failure:&lt;/strong&gt; I built a search that required EXACT spelling. Who builds search like that in 2025?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix (via Claude Code):&lt;/strong&gt; Implemented fuzzy search with case-insensitive matching. Now "sharma", "Sharma", "SHARMA", and "Sharmaa" all work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to fix:&lt;/strong&gt; 20 minutes of coding, 30 minutes of embarrassment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Real-world data is messy. Names have spelling variations. Search needs to be forgiving, not pedantic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue #2: The Invisible Save Button (Day 1, 11:00 AM)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "I marked this delivery as completed, but it's still showing as pending."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;looks at form&lt;/em&gt; "Did you click the save button?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "What save button?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;realizes&lt;/em&gt; "...oh no."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Design Failure:&lt;/strong&gt; I forgot to add a save button. The form looked complete but did nothing when you filled it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; Added the button. Yes, I forgot to add a save button. To a form. That people fill out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to fix:&lt;/strong&gt; 5 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Test EVERY interaction. Don't assume "obvious" buttons exist. Actually click them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue #3: The Payment System That Rejected Reality (Day 2, 2:00 PM)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "The app won't let me allocate this payment."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "What's the error?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "It says 'amount exceeds invoice total'. The invoice is ₹1,200 and the customer paid ₹1,500."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Well, you can't pay more than the invoice amount—"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "They overpaid. Customers do that all the time."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "...they do?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Yes. They round up. It's normal."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Design Failure:&lt;/strong&gt; My validation logic prevented overpayments because I didn't think they happened. They happen ALL THE TIME.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix (via Claude Code):&lt;/strong&gt; Allow overpayments, create "unapplied_payments" entries for the excess, show clear message explaining the split.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to fix:&lt;/strong&gt; 2 hours (touched payment logic across multiple files).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Ask your team about edge cases. They know the business better than you do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11wmb6eydoblthmme03s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11wmb6eydoblthmme03s.png" alt="SCREENSHOT: Payment allocation dialog showing overpayment handling" width="800" height="823"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue #4: Search That Assumed Too Much (Day 2, 4:00 PM)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "How do I find the customer on Route 1, house number 47?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Search by their name."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "I don't remember their name. I remember they're on Route 1, near the temple."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Oh. You can't search by that."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "But that's how we think about customers—by location and route, not names."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Design Failure:&lt;/strong&gt; I assumed everyone searches by customer name. In reality, delivery personnel think in routes, landmarks, and house numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; Added filters for route, delivery time, and area. Added sorting by delivery sequence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to fix:&lt;/strong&gt; 3 hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Don't design based on how YOU think. Design based on how USERS think.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue #5: The Date Timezone Bug I Thought I'd Fixed (Day 3, 8:00 AM)
&lt;/h3&gt;

&lt;p&gt;Remember that IST timezone migration where I fixed 76 files? I missed one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Orders generated for yesterday instead of today."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;checks timestamp&lt;/em&gt; "It's 11:45 PM. Should be generating for today."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "But it says yesterday's date."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Design Failure:&lt;/strong&gt; ONE function in the reports module was still using &lt;code&gt;new Date()&lt;/code&gt; instead of &lt;code&gt;getCurrentISTDate()&lt;/code&gt;. At 11:30 PM IST, UTC was still the previous day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; Found and fixed the last remaining timezone issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to find:&lt;/strong&gt; 3 hours. &lt;strong&gt;Time to fix:&lt;/strong&gt; 5 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; "I fixed all of them" is a dangerous assumption. Test edge cases at 11:59 PM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue #6: The Double-Click Disaster (Day 4, 10:00 AM)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "I generated an invoice for Mrs. Reddy, and it created two identical PDFs."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "How did that happen?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "I clicked 'Generate Invoice', it was taking time, so I clicked again to make sure it registered."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Design Failure:&lt;/strong&gt; No button disable during PDF generation. Users could click multiple times and create duplicates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; Disable button on first click, show loading spinner, re-enable on completion or error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to fix:&lt;/strong&gt; 15 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Users are impatient (rightfully so). If something is loading, SHOW THEM IT'S LOADING.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Breakthroughs (When It Actually Worked)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Breakthrough #1: The 8-Second Miracle
&lt;/h3&gt;

&lt;p&gt;Day 5, 6:00 AM. First real production use of order generation.&lt;/p&gt;

&lt;p&gt;I clicked "Generate Orders for Today."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The system:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loaded 145 customers&lt;/li&gt;
&lt;li&gt;Checked their active subscriptions&lt;/li&gt;
&lt;li&gt;Applied 2-day pattern logic for 37 customers&lt;/li&gt;
&lt;li&gt;Applied 12 active modifications (skips and increases)&lt;/li&gt;
&lt;li&gt;Calculated quantities and prices&lt;/li&gt;
&lt;li&gt;Created 132 orders (13 customers had no active subscriptions)&lt;/li&gt;
&lt;li&gt;Generated production summary report&lt;/li&gt;
&lt;li&gt;Generated route-wise delivery lists for a whole month that led to more than 3000 deliveries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time taken: 8 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My team watched the progress bar complete and just stared at the screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; 45 minutes of manual Excel work, cross-checking notes, verifying phone numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; 8 seconds. Automated. Accurate.&lt;/p&gt;

&lt;p&gt;No one said anything for a moment. Then: "Can we trust this?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Let's verify the first 20 orders against our manual list."&lt;/p&gt;

&lt;p&gt;We did. &lt;strong&gt;Perfect match.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team reaction:&lt;/strong&gt; "This is going to save us hours every day."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03om5ngjfzwi3tbqnzl0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03om5ngjfzwi3tbqnzl0.png" alt="SCREENSHOT: Order generation success message with count" width="445" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Breakthrough #2: Professional Invoices That Changed Perception
&lt;/h3&gt;

&lt;p&gt;Day 7. First real invoice generated and printed.&lt;/p&gt;

&lt;p&gt;Professional PDF. PureDairy branding. GST calculations. Itemized deliveries. Bank details. Everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team reaction:&lt;/strong&gt; "This looks like it came from a big company."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "We ARE a legitimate company."&lt;/p&gt;

&lt;p&gt;Before this system, we used handwritten bills with carbon copies. Now we have invoices that look like they belong in a corporate office.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unexpected benefit:&lt;/strong&gt; Customers started paying faster. Professional invoices signal professionalism. Who knew?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi53bffq1df0st5i7jo10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi53bffq1df0st5i7jo10.png" alt="Invoice Template" width="800" height="1020"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Breakthrough #3: The Outstanding Report That Actually Made Sense
&lt;/h3&gt;

&lt;p&gt;Day 10. First time running the full outstanding report with real data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total outstanding: ₹2,34,500&lt;/li&gt;
&lt;li&gt;Broken down by customer&lt;/li&gt;
&lt;li&gt;Then by type (invoices, opening balance, credit sales)&lt;/li&gt;
&lt;li&gt;Then by individual transactions&lt;/li&gt;
&lt;li&gt;With complete payment allocation history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Wait, we can see EXACTLY what each customer owes?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Yes. Down to the paisa."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "And WHY they owe it?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Invoice number, date, amount, what's been paid, what's pending."&lt;/p&gt;

&lt;p&gt;For the first time in 5 years of running this business, we had crystal clear financial visibility.&lt;/p&gt;

&lt;p&gt;No more "I think they owe around ₹5,000."&lt;/p&gt;

&lt;p&gt;Now it's: "They owe ₹5,234.50 across 3 invoices and 1 credit sale from September 3, with ₹1,000 paid on September 10 allocated to invoice #2025202600147."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljifenfrwvw7f19dxm5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljifenfrwvw7f19dxm5f.png" alt="SCREENSHOT: Outstanding report showing customer breakdown" width="800" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Breakthrough #4: The Mistake We Caught BEFORE It Happened
&lt;/h3&gt;

&lt;p&gt;Day 14. A customer called: "We'll be out of town September 20-25."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old process:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write it down somewhere&lt;/li&gt;
&lt;li&gt;Hope someone sees it&lt;/li&gt;
&lt;li&gt;Probably forget&lt;/li&gt;
&lt;li&gt;Deliver milk anyway&lt;/li&gt;
&lt;li&gt;Lose money on spoiled milk&lt;/li&gt;
&lt;li&gt;Apologize to angry customer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;New process:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Modifications&lt;/li&gt;
&lt;li&gt;Add Skip for that date range&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Orders for those dates automatically show 0 quantity. No delivery scheduled. No milk wasted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The customer:&lt;/strong&gt; Never knew how close we came to messing up. Because we didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team reaction:&lt;/strong&gt; "This is what we've needed for years."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk40vivjy2s4u59ibxu4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk40vivjy2s4u59ibxu4t.png" alt="Route Delivery Report" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What My Team Taught Me About Building Software
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lesson #1: Desktop vs Web Isn't About Intelligence
&lt;/h3&gt;

&lt;p&gt;My team was used to desktop software: double-click icon, program opens.&lt;/p&gt;

&lt;p&gt;Web apps work differently: open browser → type URL → bookmark for later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This wasn't a knowledge gap. It was a different mental model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Desktop apps = programs you install.&lt;br&gt;
Web apps = websites that act like programs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; I created desktop shortcuts that opened the browser directly to the app. Bridged the gap between mental models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Don't design for "tech-savvy" vs "non-tech." Design for mental models and workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson #2: Your Test Data Lies to You
&lt;/h3&gt;

&lt;p&gt;I tested with clean data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Customer A", "Customer B"&lt;/li&gt;
&lt;li&gt;Perfect spelling&lt;/li&gt;
&lt;li&gt;Consistent phone formats&lt;/li&gt;
&lt;li&gt;No edge cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real data:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Names spelled 5 different ways&lt;/li&gt;
&lt;li&gt;Phone numbers with/without country codes&lt;/li&gt;
&lt;li&gt;Addresses like "near the temple, blue gate"&lt;/li&gt;
&lt;li&gt;Notes in random fields&lt;/li&gt;
&lt;li&gt;Edge cases EVERYWHERE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Test with real data from Day 1. Export your messiest Excel sheet and use that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson #3: "Obvious" Features Aren't Obvious
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "I added bulk payment entry. You can process 20 payments at once!"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Why would we do that?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Instead of entering them one by one?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "We only get 2-3 payments a day."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "What about month-end when customers pay in cash?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Oh! That takes 2 hours. We can do them all at once now?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Features aren't valuable until users see them solving THEIR specific pain point.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson #4: Users Reveal What You Actually Need to Build
&lt;/h3&gt;

&lt;p&gt;I spent 4 hours building a "Customer Timeline" showing every interaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage count:&lt;/strong&gt; 0. Never used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt; My team doesn't care about timelines. They care about:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What does this customer owe?&lt;/li&gt;
&lt;li&gt;What are they getting today?&lt;/li&gt;
&lt;li&gt;Any special instructions?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Watch users work. Find pain points. Build solutions for those. Not for what looks cool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson #5: Error Messages Should Speak Human
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;My original error:&lt;/strong&gt; "Foreign key constraint violation: 23503"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "What does this mean?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;looks it up&lt;/em&gt; "You're trying to create an order for a customer with no active subscription."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; "Then why doesn't it say that?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "...good point."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New error:&lt;/strong&gt; "Cannot create order: This customer has no active subscriptions. Please add a subscription first."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Error messages should explain the problem AND the solution. In plain language.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Impact (Numbers Don't Lie)
&lt;/h2&gt;

&lt;p&gt;After 2 months of production use with 145 real customers:&lt;/p&gt;

&lt;h3&gt;
  
  
  Time Savings:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Order generation:&lt;/strong&gt; 45 min → 8 sec (99.7% reduction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice creation:&lt;/strong&gt; 30 min → 2 min (93% reduction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment tracking:&lt;/strong&gt; 60 min/day → 10 min/day (83% reduction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finding customer info:&lt;/strong&gt; 5 min → 10 sec (96% reduction)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total time saved per day:&lt;/strong&gt; ~2.5 hours&lt;br&gt;
&lt;strong&gt;Total time saved per month:&lt;/strong&gt; ~75 hours&lt;/p&gt;

&lt;p&gt;That's nearly 2 full-time employees worth of productivity gained.&lt;/p&gt;

&lt;h3&gt;
  
  
  Errors Eliminated:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Delivery mistakes:&lt;/strong&gt; 8-10/month → 0 (100% reduction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment allocation errors:&lt;/strong&gt; 3-5/month → 1 (80% reduction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice mistakes:&lt;/strong&gt; 2-3/month → 0 (100% reduction)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Money Saved:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spoiled milk from wrong deliveries:&lt;/strong&gt; ~₹5,000/month → ₹0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer refunds for mistakes:&lt;/strong&gt; ~₹2,000/month → ₹0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labor time saved (valued at ₹200/hour):&lt;/strong&gt; ~₹15,000/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total monthly savings: ~₹23,000&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Annual savings: ~₹2,76,000&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development cost: ₹5000 (just my time learning, little cost of Claude code pro subscription)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ROI: Infinite&lt;/strong&gt; (because initial cost was as good as zero)&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Working (And What Isn't)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Working Great:
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;Order Generation&lt;/strong&gt; - Daily orders in 8 seconds, zero mistakes&lt;br&gt;
✅ &lt;strong&gt;Modification Tracking&lt;/strong&gt; - No more forgotten vacation skips&lt;br&gt;
✅ &lt;strong&gt;Invoice Generation&lt;/strong&gt; - Professional PDFs with GST compliance&lt;br&gt;
✅ &lt;strong&gt;Outstanding Tracking&lt;/strong&gt; - Complete financial visibility&lt;br&gt;
✅ &lt;strong&gt;Bulk Operations&lt;/strong&gt; - 2-hour tasks done in 10 minutes&lt;br&gt;
✅ &lt;strong&gt;Reports&lt;/strong&gt; - Production summaries, route lists, payment tracking&lt;/p&gt;

&lt;h3&gt;
  
  
  Still Needs Work:
&lt;/h3&gt;

&lt;p&gt;🔧 &lt;strong&gt;Mobile Responsiveness&lt;/strong&gt; - Some tables don't display well on phones&lt;br&gt;
🔧 &lt;strong&gt;Search Performance&lt;/strong&gt; - Slowing down with more data&lt;br&gt;
🔧 &lt;strong&gt;Loading States&lt;/strong&gt; - Not all actions show clear feedback&lt;br&gt;
🔧 &lt;strong&gt;Offline Support&lt;/strong&gt; - Delivery personnel need offline capability&lt;br&gt;
🔧 &lt;strong&gt;Error Recovery&lt;/strong&gt; - Need better handling of network failures&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons from What Isn't Working:
&lt;/h3&gt;

&lt;p&gt;I didn't build mobile-first. Big mistake. Delivery happens in the field on phones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix planned:&lt;/strong&gt; Progressive Web App (PWA) with offline support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Build for the actual usage context, not your development environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Study Some Coding Fundamentals First
&lt;/h3&gt;

&lt;p&gt;I jumped in completely blind. While that worked, I wasted hours on things that 2 weeks of basic coding tutorials would've prevented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I should've learned first:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic JavaScript/TypeScript syntax&lt;/li&gt;
&lt;li&gt;How React components work (at least conceptually)&lt;/li&gt;
&lt;li&gt;What a database query looks like&lt;/li&gt;
&lt;li&gt;Basic Git commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; You can still use AI to write code, but understanding fundamentals helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask better questions&lt;/li&gt;
&lt;li&gt;Spot obvious mistakes&lt;/li&gt;
&lt;li&gt;Understand what the AI is suggesting&lt;/li&gt;
&lt;li&gt;Debug issues faster&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time investment:&lt;/strong&gt; 2-3 weeks of YouTube tutorials would've saved me months of confusion.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Start with a Vision (Even If Imperfect)
&lt;/h3&gt;

&lt;p&gt;I built features reactively: "Oh, we need this. Now we need that."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better approach:&lt;/strong&gt; Spend a week mapping out the entire system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are ALL the features needed?&lt;/li&gt;
&lt;li&gt;How do they connect?&lt;/li&gt;
&lt;li&gt;What's the data flow?&lt;/li&gt;
&lt;li&gt;What's the user journey?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This doesn't mean perfect planning.&lt;/strong&gt; It means having a rough mental model of the complete system before coding your first feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; I rebuilt the payment system 3 times because I didn't understand how it connected to invoices, sales, and outstanding calculations. A rough vision would've prevented that.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Always Understand What AI Wants to Do First
&lt;/h3&gt;

&lt;p&gt;This is the biggest mistake I made.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I did:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask Claude Code to build something&lt;/li&gt;
&lt;li&gt;Copy-paste the code&lt;/li&gt;
&lt;li&gt;Run it&lt;/li&gt;
&lt;li&gt;Hope it works&lt;/li&gt;
&lt;li&gt;Get confused when it doesn't&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Like a monkey jumping around without thinking.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I should've done:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ask Claude Code to explain the approach first&lt;/li&gt;
&lt;li&gt;Understand the logic before seeing code&lt;/li&gt;
&lt;li&gt;Ask questions about parts I don't understand&lt;/li&gt;
&lt;li&gt;THEN have it write the code&lt;/li&gt;
&lt;li&gt;Review the code with understanding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad approach (what I did):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Me: "Build a payment allocation system"&lt;br&gt;
Claude: &lt;em&gt;generates 200 lines of code&lt;/em&gt;&lt;br&gt;
Me: &lt;em&gt;copies without reading&lt;/em&gt; "It doesn't work!"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Good approach (what I should've done):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Me: "Explain how a payment allocation system should work"&lt;br&gt;
Claude: "First, you need to track payments. Then create mappings to invoices..."&lt;br&gt;
Me: "Wait, why do we need separate mapping tables?"&lt;br&gt;
Claude: "Because one payment can be split across multiple invoices..."&lt;br&gt;
Me: "Ah! Now I understand. Show me the code."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; When you understand the approach, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spot logical errors before implementation&lt;/li&gt;
&lt;li&gt;Modify the solution for your specific needs&lt;/li&gt;
&lt;li&gt;Debug issues without asking AI every time&lt;/li&gt;
&lt;li&gt;Learn from each implementation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Remember: AI is Support, Not You
&lt;/h3&gt;

&lt;p&gt;AI writes code. &lt;strong&gt;You&lt;/strong&gt; are the developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this means:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;YOU define requirements&lt;/li&gt;
&lt;li&gt;YOU understand business logic&lt;/li&gt;
&lt;li&gt;YOU make architectural decisions&lt;/li&gt;
&lt;li&gt;YOU test with real scenarios&lt;/li&gt;
&lt;li&gt;YOU are responsible for what ships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI is a powerful assistant, not a replacement for thinking.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I got wrong:&lt;/strong&gt; I treated Claude Code like a magic box. Put in requirements, get out working code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reality:&lt;/strong&gt; Claude Code is like a junior developer who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writes code faster than you&lt;/li&gt;
&lt;li&gt;Knows syntax better than you&lt;/li&gt;
&lt;li&gt;But doesn't understand YOUR business&lt;/li&gt;
&lt;li&gt;And can't test YOUR specific workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Your job:&lt;/strong&gt; Be the senior developer who directs, reviews, tests, and ensures quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; The moment you stop thinking and blindly trust AI is the moment you ship broken code.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Test with Real Data from Day 1
&lt;/h3&gt;

&lt;p&gt;I wasted 2 weeks building features that broke with real data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better approach:&lt;/strong&gt; Export your messiest Excel data on Day 1. Use that for all testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; Clean test data ("Customer A", "Customer B") doesn't reveal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spelling variations&lt;/li&gt;
&lt;li&gt;Missing fields&lt;/li&gt;
&lt;li&gt;Edge cases&lt;/li&gt;
&lt;li&gt;Real-world complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Real data breaks your assumptions early, when it's cheap to fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Involve Users Earlier
&lt;/h3&gt;

&lt;p&gt;I should've had my team testing from Day 3, not Day 21.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; They would've caught design flaws before I built entire features around wrong assumptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One week of user testing saves one month of rebuilding.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons for Fellow Vibe Coders
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Your Users Are Your Best Teachers
&lt;/h3&gt;

&lt;p&gt;Every "this doesn't work" is actually "you made an incorrect assumption."&lt;/p&gt;

&lt;p&gt;Listen. Learn. Fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Real-World Usage Reveals Real Requirements
&lt;/h3&gt;

&lt;p&gt;No amount of planning beats 48 hours of real users doing real work.&lt;/p&gt;

&lt;p&gt;Ship early. Get feedback. Iterate.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Design Failures Aren't User Errors
&lt;/h3&gt;

&lt;p&gt;If users can't figure out your interface, that's YOUR failure, not theirs.&lt;/p&gt;

&lt;p&gt;Make it obvious. Make it forgiving. Make it helpful.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Perfect Code &amp;lt; Working Software
&lt;/h3&gt;

&lt;p&gt;My code isn't perfect. Some functions are too long. Some components do too much.&lt;/p&gt;

&lt;p&gt;But it works. It saves time. It solves problems.&lt;/p&gt;

&lt;p&gt;Ship imperfect solutions that work over perfect solutions that never ship.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Mental Models Matter More Than Features
&lt;/h3&gt;

&lt;p&gt;Don't build what you think is intuitive. Build what matches how users actually think.&lt;/p&gt;

&lt;p&gt;Route → Customer → Order, not Customer → Order → Route.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Test at 11:59 PM
&lt;/h3&gt;

&lt;p&gt;Edge cases live at boundaries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;11:59 PM (date changes)&lt;/li&gt;
&lt;li&gt;Month end (financial periods)&lt;/li&gt;
&lt;li&gt;Year end (financial years)&lt;/li&gt;
&lt;li&gt;First/last customer (sorting)&lt;/li&gt;
&lt;li&gt;0 quantity (empty states)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test there.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. AI Writes Code, You Ensure It's Right
&lt;/h3&gt;

&lt;p&gt;Claude Code wrote 90% of my code. But I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defined the requirements&lt;/li&gt;
&lt;li&gt;Tested with real data&lt;/li&gt;
&lt;li&gt;Found the bugs&lt;/li&gt;
&lt;li&gt;Verified the fixes&lt;/li&gt;
&lt;li&gt;Made the decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI is a powerful tool. YOU are still responsible for the outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Question Everyone Asks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"Can I really build production software with no coding experience?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My honest answer:&lt;/strong&gt; Yes, but it's not magic. Here's the reality:&lt;/p&gt;

&lt;h3&gt;
  
  
  What You CAN Do:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build real solutions to real problems&lt;/strong&gt; - If you understand the problem deeply&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship working software&lt;/strong&gt; - Not perfect, but functional&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn on the job&lt;/strong&gt; - YouTube tutorials + AI coding + real testing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save money&lt;/strong&gt; - ₹0 development cost vs ₹50,000+ for commercial ERP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customize perfectly&lt;/strong&gt; - Built exactly for YOUR business needs&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What You CAN'T Do (At Least Not Yet):
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build it in 3 days&lt;/strong&gt; - My Day 1 was foundation. Day 30 was usable. Day 60 was solid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understand everything&lt;/strong&gt; - I still don't know what half the code does&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid all bugs&lt;/strong&gt; - 47 bugs in 48 hours. That's normal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skip the learning curve&lt;/strong&gt; - You'll spend hours on YouTube, reading docs, asking AI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignore user feedback&lt;/strong&gt; - Your assumptions WILL be wrong&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Realistic Timeline:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Week 1:&lt;/strong&gt; Core features (messy but working)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 2-3:&lt;/strong&gt; Refinements and testing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 4-6:&lt;/strong&gt; Bug fixes and real usage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Month 3+:&lt;/strong&gt; Optimization and improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This is a marathon, not a sprint.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I Am Now (October 2025)
&lt;/h2&gt;

&lt;p&gt;The app is in production with 145 customers. Real business operations depend on it daily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current status:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Daily orders generated automatically&lt;/li&gt;
&lt;li&gt;✅ Deliveries tracked accurately&lt;/li&gt;
&lt;li&gt;✅ Invoices sent professionally&lt;/li&gt;
&lt;li&gt;✅ Payments allocated correctly&lt;/li&gt;
&lt;li&gt;✅ Outstanding tracked precisely&lt;/li&gt;
&lt;li&gt;🔧 Mobile optimization ongoing&lt;/li&gt;
&lt;li&gt;🔧 Performance improvements in progress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's changed:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero delivery mistakes in 1.5 months&lt;/li&gt;
&lt;li&gt;3 hours saved every day&lt;/li&gt;
&lt;li&gt;₹23,000 saved every month&lt;/li&gt;
&lt;li&gt;Professional image with customers&lt;/li&gt;
&lt;li&gt;Complete financial clarity&lt;/li&gt;
&lt;li&gt;Confidence that I can build solutions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Most importantly:&lt;/strong&gt; I'm not afraid of technology anymore. I don't wait for permission to build solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm a dairy farmer who codes. And it's working.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm planning to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open-source the dairy-specific logic&lt;/strong&gt; - Help other dairies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build customer self-service portal&lt;/strong&gt; - Let customers manage subscriptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create video tutorials&lt;/strong&gt; - Show other business owners how&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize for mobile&lt;/strong&gt; - Better field experience&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add offline support&lt;/strong&gt; - Work without internet&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;And most importantly:&lt;/strong&gt; Help others do the same.&lt;/p&gt;

&lt;p&gt;Because if a dairy farmer in Jalgaon can build an ERP with AI, &lt;strong&gt;anyone can solve their business problems with code.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  For My Fellow Vibe Coders
&lt;/h2&gt;

&lt;p&gt;You don't need to understand everything to build something valuable.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A real problem you understand deeply&lt;/li&gt;
&lt;li&gt;Willingness to learn (YouTube + AI + testing)&lt;/li&gt;
&lt;li&gt;Patience with yourself and your users&lt;/li&gt;
&lt;li&gt;Courage to ship imperfect solutions&lt;/li&gt;
&lt;li&gt;Openness to feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Start today.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not tomorrow. Not when you "know enough." Today.&lt;/p&gt;

&lt;p&gt;Describe your problem to Claude Code. Let it write the first line.&lt;/p&gt;

&lt;p&gt;Then the second. Then the third.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You'll make mistakes.&lt;/strong&gt; (I made 47 in 48 hours)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You won't understand everything.&lt;/strong&gt; (I still don't)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your users will find issues.&lt;/strong&gt; (They're your best teachers)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But you'll build something that works.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that's what matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Read the Complete Series:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/why-i-built-an-erp-for-my-dairy-business-and-why-you-should-too-19gg"&gt;Part 1: Why I Built an ERP for My Dairy Business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/vibe-coding-through-subscriptions-payments-and-pdf-nightmares-4bp8"&gt;Part 2: Vibe Coding Through Subscriptions, Payments, and PDF Nightmares&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 3: Production Testing &amp;amp; Lessons (You Are Here)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Series:&lt;/strong&gt; &lt;em&gt;From Dairy Farmer to Developer: Building a Production ERP with AI&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Follow my journey:&lt;/strong&gt; &lt;a href="https://dev.to/dishankg"&gt;dev.to/dishankg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Questions? Want to try this yourself?&lt;/strong&gt; Drop a comment. I'll answer honestly, including "I don't know, but here's how I'd figure it out."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This and all the posts in this series are written with full assistance from Claude Code, but reflect my actual stories, experiences and problems to the fullest.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;To my fellow vibe coders, non-technical founders, and small business owners:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don't need permission to solve your problems with code.&lt;/p&gt;

&lt;p&gt;You just need to start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now go build something.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This and all the posts in this series are written with full assistance from Claude Code, but reflect my actual stories, experiences and problems to the fullest&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Dishank Gupta&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Dairy Farmer | Vibe Coder | Building solutions with AI&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Jalgaon, Maharashtra, India&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Stay tuned for more&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Vibe Coding Through Subscriptions, Payments, and PDF Nightmares</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Tue, 07 Oct 2025 13:30:00 +0000</pubDate>
      <link>https://dev.to/dishankg/vibe-coding-through-subscriptions-payments-and-pdf-nightmares-4bp8</link>
      <guid>https://dev.to/dishankg/vibe-coding-through-subscriptions-payments-and-pdf-nightmares-4bp8</guid>
      <description>&lt;h2&gt;
  
  
  Day 2: When "Easy" Features Aren't Easy
&lt;/h2&gt;

&lt;p&gt;I woke up on August 6, 2025, feeling like a coding god.&lt;/p&gt;

&lt;p&gt;I mean, I'd built a working customer management system in 5.5 hours. Database, authentication, forms, everything. How hard could the rest be?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Narrator:&lt;/strong&gt; &lt;em&gt;It was harder.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today's mission: Build the order generation system and delivery tracking. Should be simple, right? Subscriptions exist. Just... generate orders from them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4 hours later:&lt;/strong&gt; I was staring at code that looked like ancient hieroglyphics, trying to understand why a "2-day pattern" calculation was 47 lines of logic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5xkhd67q2jdchwfjh32t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5xkhd67q2jdchwfjh32t.png" alt="SCREENSHOT: Code editor showing complex pattern calculation logic" width="800" height="1253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me take you through the real journey—not the polished version, but the messy, confused, "what am I even doing" version.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Features That Seemed Simple (But Weren't)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Modifications System (Aug 5-6)&lt;/strong&gt; - "Just Let Them Skip Days"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What I thought:&lt;/strong&gt; Add a "skip this date" button. Done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it actually needed:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skip modifications (quantity → 0)&lt;/li&gt;
&lt;li&gt;Increase modifications (1L → 2L temporarily)&lt;/li&gt;
&lt;li&gt;Decrease modifications (2L → 1L temporarily)&lt;/li&gt;
&lt;li&gt;Date ranges (apply from Aug 10-20)&lt;/li&gt;
&lt;li&gt;Automatic integration with order generation&lt;/li&gt;
&lt;li&gt;Status management (active/inactive)&lt;/li&gt;
&lt;li&gt;Customer + product relationship tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I remember asking Claude Code: &lt;em&gt;"Can't we just... mark the order as skipped?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Claude Code: &lt;em&gt;"That would work, but then you lose the audit trail of WHY it was skipped, WHEN it was planned, and WHO requested it. Also, what if they want to increase quantity for a date range? You'd need..."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Me: &lt;em&gt;"Okay, okay! Show me the 'proper' way."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Turns out, the "proper" way involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A separate &lt;code&gt;modifications&lt;/code&gt; table&lt;/li&gt;
&lt;li&gt;Date-based filtering during order generation&lt;/li&gt;
&lt;li&gt;Validation to prevent conflicting modifications&lt;/li&gt;
&lt;li&gt;UI to show active vs expired modifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Did I understand all of it? No.&lt;br&gt;
Did it work? Yes.&lt;br&gt;
Did I move on? Absolutely.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. &lt;strong&gt;Order Generation (Aug 6)&lt;/strong&gt; - "The Math That Broke My Brain"
&lt;/h3&gt;

&lt;p&gt;Here's where things got spicy.&lt;/p&gt;

&lt;p&gt;Daily orders need to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Look at active subscriptions&lt;/li&gt;
&lt;li&gt;Apply 2-day pattern logic&lt;/li&gt;
&lt;li&gt;Apply active modifications&lt;/li&gt;
&lt;li&gt;Calculate the final quantity&lt;/li&gt;
&lt;li&gt;Calculate the price&lt;/li&gt;
&lt;li&gt;Create the order&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The 2-day pattern logic alone made my head spin:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Wait, so if the pattern started on August 1 (a Thursday), and today is August 6 (a Tuesday), how do we know if it's Day 1 or Day 2 of the pattern?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "We calculate the number of days between the pattern start date and today, then use modulo 2 to determine the cycle position."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "...modulo?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "The remainder after division. If days difference is even, it's the same day as the start. If odd, it's the other day."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;googles "what is modulo"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I spent 2 hours just testing this logic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create subscription with Day 1: 1L, Day 2: 2L, Start: Aug 1&lt;/li&gt;
&lt;li&gt;Generate orders for Aug 1-14&lt;/li&gt;
&lt;li&gt;Manually verify each day matched the pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It worked. I still don't fully understand modulo arithmetic, but it worked.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. &lt;strong&gt;Delivery Tracking (Aug 6)&lt;/strong&gt; - "Planned vs Actual: A Novel"
&lt;/h3&gt;

&lt;p&gt;This seemed straightforward: Record what was actually delivered vs what was planned.&lt;/p&gt;

&lt;p&gt;But then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What if they delivered 1.5L when 1L was planned?&lt;/li&gt;
&lt;li&gt;What if they delivered 0L (customer wasn't home)?&lt;/li&gt;
&lt;li&gt;What about additional items (like butter or paneer)?&lt;/li&gt;
&lt;li&gt;How do we calculate variance?&lt;/li&gt;
&lt;li&gt;What's acceptable variance (+/- 20%)?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ended up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;deliveries&lt;/code&gt; table with planned_quantity and actual_quantity&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;delivery_additional_items&lt;/code&gt; table for extras&lt;/li&gt;
&lt;li&gt;Variance calculations with color-coded indicators&lt;/li&gt;
&lt;li&gt;Delivery performance reports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The report generation alone took 3 hours because I kept finding edge cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What if an order has no delivery?&lt;/li&gt;
&lt;li&gt;What if a delivery has no order? (manual delivery)&lt;/li&gt;
&lt;li&gt;What if the variance is exactly 0?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each time I thought I was done, I'd test with real data from our business and find another gap.&lt;/p&gt;
&lt;h2&gt;
  
  
  The "Oh God, What Have I Done" Moments
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Moment #1: Invoice Generation (Aug 13)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvqr1lqeoagxrkbrm5p6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvqr1lqeoagxrkbrm5p6.png" alt="Invoice PDF template with PureDairy branding" width="800" height="1020"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I needed invoices. Professional invoices. With GST. In PDF format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "I need to generate invoices as PDFs."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "We'll use Puppeteer to convert HTML to PDF."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "What's Puppeteer?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "It's a headless Chrome browser we can control programmatically."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "We're... launching a whole browser... to make a PDF?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Yes."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "That seems excessive."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "It's the best way to get professional PDFs from HTML templates."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "...okay."&lt;/p&gt;

&lt;p&gt;Installing Puppeteer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm add puppeteer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt; Downloading Chromium... 150MB...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me, watching the progress bar:&lt;/strong&gt; "This is fine. Everything is fine."&lt;/p&gt;

&lt;p&gt;Then came the invoice template. I spent an ENTIRE DAY on the invoice HTML:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PureDairy logo positioning&lt;/li&gt;
&lt;li&gt;GST breakdown calculations&lt;/li&gt;
&lt;li&gt;Line items layout&lt;/li&gt;
&lt;li&gt;Subscription deliveries + manual sales in one invoice&lt;/li&gt;
&lt;li&gt;Footer with bank details&lt;/li&gt;
&lt;li&gt;Page breaks for multiple pages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don't know CSS well. I know it even less after that day.&lt;/p&gt;

&lt;p&gt;Favorite Claude Code moment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "The logo is showing up on the second page too. I want it only on page 1."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Add this CSS: &lt;code&gt;@page { @top-left { content: ''; } }&lt;/code&gt; and use &lt;code&gt;thead { display: table-header-group; }&lt;/code&gt;"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "I understood literally none of those words, but let me try it."&lt;/p&gt;

&lt;p&gt;It worked. I still don't know why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moment #2: Financial Year Logic (Aug 13)
&lt;/h3&gt;

&lt;p&gt;Indian financial year runs April-March. Invoice numbering needed format: &lt;code&gt;YYYYYYYYNNNNN&lt;/code&gt; (start year + end year + sequential number).&lt;/p&gt;

&lt;p&gt;Example: First invoice of FY 2025-26 = &lt;code&gt;2025202600001&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "How do we get the financial year from a date?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "If the month is April or later, FY starts that year. Otherwise, it started the previous year."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "So if it's March 2026, the FY is 2025-2026?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Correct. March 2026 is the last month of FY 2025-26."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;brain melting&lt;/em&gt; "Just... write the function."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateFinancialYear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;startYear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;endYear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getFullYear&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;month&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getMonth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;month&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c1"&gt;// April = month 3 (0-indexed)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;startYear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;endYear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;startYear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;endYear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;year&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I tested this for an hour with different dates, convinced it would break somewhere. It didn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moment #3: Payment Allocation (Aug 20-21)
&lt;/h3&gt;

&lt;p&gt;This is where things got COMPLICATED.&lt;/p&gt;

&lt;p&gt;Customers make payments. Those payments need to be allocated to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Invoices&lt;/strong&gt; (for subscription deliveries)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opening balance&lt;/strong&gt; (old outstanding from before the system)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct sales&lt;/strong&gt; (cash/credit sales without invoices)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The payment screen needed to show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All unpaid invoices for this customer&lt;/li&gt;
&lt;li&gt;Their opening balance&lt;/li&gt;
&lt;li&gt;All unpaid credit sales&lt;/li&gt;
&lt;li&gt;Let the admin allocate the payment across all three&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I read the conversation file &lt;code&gt;payment_gaps_conv.txt&lt;/code&gt; where I asked Claude to analyze the entire payment system for gaps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude found 12 potential issues.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Race conditions. Circular logic. Missing validations. Inconsistent outstanding calculations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftwd80hnddubyq2yvejrm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftwd80hnddubyq2yvejrm.png" alt="SCREENSHOT: Payment allocation dialog showing multiple allocation options" width="800" height="823"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 2 days fixing payment logic. The breakthrough came when Claude suggested:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Instead of calculating outstanding from payments, calculate it from invoices and sales. Payments reduce outstanding, they don't create it."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mind. Blown.&lt;/p&gt;

&lt;p&gt;I'd been thinking about it backwards the entire time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moment #4: The IST Timezone Migration (Aug 25)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;76 files. 76 files were using the wrong date pattern.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ WRONG (uses local browser timezone)&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;T&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ CORRECT (uses IST consistently)&lt;/span&gt;
&lt;span class="nf"&gt;getCurrentISTDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;formatDateForDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getCurrentISTDate&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why does this matter?&lt;/p&gt;

&lt;p&gt;If a customer in Jalgaon (IST) generates an order at 11 PM, and the browser thinks it's UTC (5.5 hours behind), it might generate the order for the NEXT day.&lt;/p&gt;

&lt;p&gt;Invoice numbers could be wrong. Financial years could be wrong. Reports could be wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything date-related was potentially wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I created a Task in Claude Code to find and fix all 76 files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4 hours later:&lt;/strong&gt; All fixed. Zero TypeScript errors. All tests passing.&lt;/p&gt;

&lt;p&gt;Do I fully understand timezone handling? No.&lt;br&gt;
Do I trust the IST utilities now? Absolutely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "I Have No Idea What I'm Doing" Moment
&lt;/h2&gt;

&lt;p&gt;It was August 23. I was working on database migrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "I need to re-enable Row Level Security policies."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "That's a breaking change. Many things will break, but we can fix them slowly."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; &lt;em&gt;panic rising&lt;/em&gt; "MANY THINGS? How many things?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Potentially any query that accesses the database without proper authentication context."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "...which is how many queries?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Most of them."&lt;/p&gt;

&lt;p&gt;I sat there for 10 minutes, staring at the screen, thinking:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"What am I doing? I don't understand RLS. I don't understand authentication contexts. I don't understand middleware. If this breaks, I don't know how to fix it. Why did I think I could build this? This is insane. I'm going to break everything and have nothing."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then I took a deep breath and asked:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Can we do this incrementally? Fix one thing at a time?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Yes. Let's start with the customers table and see what breaks."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Okay. Let's do that."&lt;/p&gt;

&lt;p&gt;We fixed it. One table at a time. With Claude Code explaining each step.&lt;/p&gt;

&lt;p&gt;That's the moment I realized: &lt;strong&gt;I don't need to know everything. I need to know how to ask the right questions.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bulk Operations That Changed Everything
&lt;/h2&gt;

&lt;p&gt;By late August, I had individual features working. But using them one-by-one was painful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate orders for 145 customers? 145 button clicks.&lt;/li&gt;
&lt;li&gt;Enter 50 sales? 50 forms.&lt;/li&gt;
&lt;li&gt;Process 30 payments? 30 allocation dialogs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I needed bulk operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk Sales Entry (Aug 28):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-row form with customer search&lt;/li&gt;
&lt;li&gt;Product selection with GST auto-calculation&lt;/li&gt;
&lt;li&gt;Keyboard shortcuts (Alt+A to add row, Tab on last field for new row)&lt;/li&gt;
&lt;li&gt;Real-time validation&lt;/li&gt;
&lt;li&gt;Progress tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bulk Payment Entry (Sept 2):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Same multi-row pattern&lt;/li&gt;
&lt;li&gt;Per-row allocation dialog&lt;/li&gt;
&lt;li&gt;Auto-add on save&lt;/li&gt;
&lt;li&gt;Real-time status badges&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bulk Modifications (Oct 3):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer search with subscription filtering&lt;/li&gt;
&lt;li&gt;Product dropdown (only their active subscriptions)&lt;/li&gt;
&lt;li&gt;Type selection (Skip/Increase/Decrease/Add Note)&lt;/li&gt;
&lt;li&gt;Date range selection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These took FOREVER to build. Each one had unique challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to validate 20 rows at once?&lt;/li&gt;
&lt;li&gt;How to handle partial success (10 succeed, 5 fail)?&lt;/li&gt;
&lt;li&gt;How to show progress without freezing the UI?&lt;/li&gt;
&lt;li&gt;How to make keyboard navigation feel natural?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But once they worked? &lt;em&gt;Chef's kiss.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Data entry that used to take 2 hours now took 10 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Actually Learned (vs What I Pretended to Learn)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Things I Actually Understand Now:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server Actions are like API endpoints but simpler&lt;/li&gt;
&lt;li&gt;Forms collect data, validation checks it, actions save it&lt;/li&gt;
&lt;li&gt;Dates are hard and timezones are harder&lt;/li&gt;
&lt;li&gt;Database relationships are important&lt;/li&gt;
&lt;li&gt;Good error messages save lives&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Things I Still Fake Understanding:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What exactly middleware is doing under the hood&lt;/li&gt;
&lt;li&gt;Why some things need to be client components&lt;/li&gt;
&lt;li&gt;What "hydration" means (I know it's bad when there's an error)&lt;/li&gt;
&lt;li&gt;Why TypeScript yells at me sometimes&lt;/li&gt;
&lt;li&gt;How Supabase RLS actually secures data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Things I Just Trust:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If Claude Code says I need a package, I install it&lt;/li&gt;
&lt;li&gt;If the build succeeds, it's probably okay&lt;/li&gt;
&lt;li&gt;If tests pass, good enough&lt;/li&gt;
&lt;li&gt;If it works in dev, it'll probably work in production (narrator: it didn't always)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS C:\Learn\Claude code projects\milk_subs&amp;gt; pnpm build

&amp;gt; milk_subs@0.1.0 build C:\Learn\Claude code projects\milk_subs
&amp;gt; next build

   ▲ Next.js 15.4.5
   - Environments: .env.local, .env

   Creating an optimized production build ...
 ✓ Compiled successfully in 9.0s

./src/lib/file-utils.ts
4:29  Warning: 'formatDateForDatabase' is defined but never used.  @typescript-eslint/no-unused-vars (118 Warning like this one)

info  - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/app/api-reference/config/eslint#disabling-rules
 ✓ Linting and checking validity of types 
 ✓ Collecting page data    
 ✓ Generating static pages (56/56)
 ✓ Collecting build traces    
 ✓ Finalizing page optimization

Route (app)                                         Size  First Load JS
┌ ƒ /                                              182 B         101 kB
├ ○ /_not-found                                     1 kB         101 kB
├ ƒ /api/customers/with-unapplied-payments         182 B         101 kB
├ ƒ /api/invoices/bulk-generate                    182 B         101 kB
├ ƒ /api/print/customer-delivered-quantity         182 B         101 kB
├ ƒ /api/print/customer-invoice                    182 B         101 kB                  
├ AND MANY OTHERS
├ AND MANY OTHERS
├ AND MANY OTHERS
├ ƒ /dashboard/sales/products                      182 B         101 kB
├ ƒ /dashboard/sales/reports                       183 B         104 kB
├ ƒ /dashboard/settings                            182 B         101 kB
├ ƒ /dashboard/subscriptions                     5.57 kB         176 kB
├ ƒ /dashboard/subscriptions/[id]                  183 B         104 kB
├ ƒ /dashboard/subscriptions/[id]/edit             159 B         196 kB
├ ƒ /dashboard/subscriptions/new                   159 B         196 kB
└ ○ /icon.png                                        0 B            0 B
+ First Load JS shared by all                     100 kB
  ├ chunks/0a9a203b-524236b7ed69f56d.js          54.1 kB
  ├ chunks/7742-f909f68c9802a9dd.js              44.2 kB
  └ other shared chunks (total)                  2.09 kB


ƒ Middleware                                     67.6 kB

○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Resources That Kept Me Sane
&lt;/h2&gt;

&lt;p&gt;Between coding sessions, I watched:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@RAmjad" rel="noopener noreferrer"&gt;Ray Amjad&lt;/a&gt;&lt;/strong&gt; - AI Coding expert with amazing simplicity. Too much to learn from him.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@rileybrownai" rel="noopener noreferrer"&gt;Riley Brown&lt;/a&gt;&lt;/strong&gt; - How to quickly develop an app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@iamseankochel" rel="noopener noreferrer"&gt;Sean Kochel&lt;/a&gt;&lt;/strong&gt; - Prompting guides and avoiding pitfalls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@100xEngineers" rel="noopener noreferrer"&gt;100x Engineers&lt;/a&gt;&lt;/strong&gt; - Varun Mayya, an amazing Indian content creator on AI.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I didn't watch to master anything. I watched to understand just enough to ask Claude Code better questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me initially:&lt;/strong&gt; "The thing isn't working."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me after watching tutorials:&lt;/strong&gt; "The server action is returning data, but the client component isn't re-rendering. Do I need revalidatePath?"&lt;/p&gt;

&lt;p&gt;Better questions = better answers = faster progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools That Actually Mattered
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; - My primary coding partner. Wrote 90% of the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perplexity&lt;/strong&gt; - For quick answers to "what is X?" questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube&lt;/strong&gt; - For conceptual understanding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase Dashboard&lt;/strong&gt; - For debugging database issues visually.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser DevTools&lt;/strong&gt; - For finding why things looked broken (usually CSS).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. No fancy setup. No paid courses. Just some paid tools and determination.&lt;/p&gt;

&lt;h2&gt;
  
  
  By End of August: What Actually Worked
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Customer Management&lt;/strong&gt; - 145 real customers migrated&lt;br&gt;
✅ &lt;strong&gt;Subscription System&lt;/strong&gt; - Daily + 2-day patterns working&lt;br&gt;
✅ &lt;strong&gt;Modification Tracking&lt;/strong&gt; - Skips, increases, decreases&lt;br&gt;
✅ &lt;strong&gt;Order Generation&lt;/strong&gt; - Automated daily orders&lt;br&gt;
✅ &lt;strong&gt;Delivery Tracking&lt;/strong&gt; - Planned vs actual with variance&lt;br&gt;
✅ &lt;strong&gt;Payment Management&lt;/strong&gt; - Multi-allocation support&lt;br&gt;
✅ &lt;strong&gt;Invoice Generation&lt;/strong&gt; - Professional PDFs with GST&lt;br&gt;
✅ &lt;strong&gt;Sales Tracking&lt;/strong&gt; - Cash/Credit/QR payment support&lt;br&gt;
✅ &lt;strong&gt;Outstanding Reports&lt;/strong&gt; - Triple-level expandable reports&lt;br&gt;
✅ &lt;strong&gt;Bulk Operations&lt;/strong&gt; - Sales, payments, modifications&lt;/p&gt;

&lt;p&gt;From August 5 to August 29: &lt;strong&gt;24 days.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not perfect. But functional. Actually usable. Ready for real testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lessons I Learned the Hard Way
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start Messy, Refine Later&lt;/strong&gt; - My first invoice template was ugly. It got better. Don't wait for perfect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real Data Exposes Real Problems&lt;/strong&gt; - Testing with "Customer A" and "Customer B" didn't show the issues that 145 real customers exposed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Complex Features Are Just Many Simple Features&lt;/strong&gt; - Payment allocation felt impossible until I broke it into: select invoice, enter amount, validate, save, update outstanding. Simple steps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Doesn't Read Your Mind&lt;/strong&gt; - Clear explanations = better code. "Make a payment system" vs "Create a form where admins can allocate a payment across multiple invoices, sales, and opening balance with validation" = very different results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You Don't Need to Understand Everything&lt;/strong&gt; - I still don't fully understand half the code. But I understand the business logic, and that's enough to direct the AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Panic is Part of the Process&lt;/strong&gt; - Every "this will break everything" moment passed. Every one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build for Real Use, Not Portfolio&lt;/strong&gt; - I wasn't trying to impress anyone. I was trying to stop losing money on spoiled milk. That focus helped.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;In Part 3, I'll take you through the real test: &lt;strong&gt;actually using this thing in production.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Spoiler: I found bugs I never imagined. I discovered workflows that made no sense in practice. I had to explain to my 60-year-old admin how a "browser" works.&lt;/p&gt;

&lt;p&gt;But it's working. Real customers. Real data. Real business running on software I built.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 3 coming soon: "From Dev to Dairy: Production Testing, Real Bugs, and Lessons for Fellow Vibe Coders"&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Read the series:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/why-i-built-an-erp-for-my-dairy-business-and-why-you-should-too-19gg"&gt;Part 1: Why I Built an ERP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Part 2: The Coding Journey (You Are Here)&lt;/li&gt;
&lt;li&gt;Part 3: Production Testing &amp;amp; Lessons&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;About Me:&lt;/strong&gt; I'm Dishank, a dairy farmer in Jalgaon, Maharashtra, learning to code with AI to solve real business problems. Follow along at &lt;a href="https://dev.to/dishankg"&gt;dev.to/dishankg&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Questions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"How did you handle X?" - Probably poorly at first, then Claude Code fixed it.&lt;/li&gt;
&lt;li&gt;"Did you really not know Y?" - Correct. Still don't fully understand it.&lt;/li&gt;
&lt;li&gt;"Can I do this too?" - Yes. If I can, you definitely can.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop questions below! I'll answer honestly, including the parts I still don't understand.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This and all the posts in this series are written with full assistance from Claude Code, but reflect my actual stories, experiences and problems to the fullest&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Part 3 is where it gets real: bugs in production, explaining "the internet" to my admin, and why testing with real users is both terrifying and essential.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nextjs</category>
      <category>typescript</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why I Built an ERP for My Dairy Business (And Why You Should Too)</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Mon, 06 Oct 2025 12:29:46 +0000</pubDate>
      <link>https://dev.to/dishankg/why-i-built-an-erp-for-my-dairy-business-and-why-you-should-too-19gg</link>
      <guid>https://dev.to/dishankg/why-i-built-an-erp-for-my-dairy-business-and-why-you-should-too-19gg</guid>
      <description>&lt;h2&gt;
  
  
  The ₹800 Mistake That Changed Everything
&lt;/h2&gt;

&lt;p&gt;It was mid-July 2025. A customer had asked us to skip their daily milk delivery from July 15-20 because they were going on vacation. They told us in mid-June—plenty of notice, right?&lt;/p&gt;

&lt;p&gt;We wrote it down. Multiple times. In multiple places.&lt;/p&gt;

&lt;p&gt;And we still delivered milk to their house. Every. Single. Day.&lt;/p&gt;

&lt;p&gt;For five days, 2 liters of fresh milk sat outside their locked door in the Jalgaon heat. Spoiled. Wasted. Gone.&lt;/p&gt;

&lt;p&gt;Cost to us: ₹800 in lost milk.&lt;br&gt;
Cost to our reputation: One very angry customer.&lt;br&gt;
Cost to my sanity: Watching this happen again and again and again.&lt;/p&gt;

&lt;p&gt;This wasn't a one-time thing. This was &lt;strong&gt;every week&lt;/strong&gt;. Different customers, same story. Manual notes failed. WhatsApp reminders failed. Even printed schedules taped to the delivery vehicle failed.&lt;/p&gt;

&lt;p&gt;I run PureDairy in Jalgaon, Maharashtra—a small town where tech is still catching up. We have 50 animals, 5 employees, and about 150 customers. We're not a big operation. We can't afford expensive ERPs that cost lakhs of rupees.&lt;/p&gt;

&lt;p&gt;But we also can't afford to keep losing money on spoiled milk and frustrated customers.&lt;/p&gt;

&lt;p&gt;So on August 5, 2025, I did something crazy.&lt;/p&gt;

&lt;p&gt;I decided to build my own ERP system.&lt;/p&gt;

&lt;p&gt;From scratch.&lt;/p&gt;

&lt;p&gt;With zero coding experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs0t315dtb04dnmokcp1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs0t315dtb04dnmokcp1.png" alt="SCREENSHOT: Dashboard of the final app showing customer stats" width="800" height="929"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  "But You Don't Know How to Code!"
&lt;/h2&gt;

&lt;p&gt;Correct. I didn't know what Next.js was. I didn't know what Supabase was. I didn't know what TypeScript was.&lt;/p&gt;

&lt;p&gt;But I knew my dairy business inside out. And I had Claude Code.&lt;/p&gt;

&lt;p&gt;If you've read my previous posts (&lt;a href="https://dev.to/dishankg/from-non-coder-to-production-in-4-days-my-ai-powered-app-journey-and-why-imperfect-is-perfect-56n6"&gt;here&lt;/a&gt; and &lt;a href="https://dev.to/dishankg/ai-pair-programming-magic-building-an-advanced-blog-system-in-one-session-and-why-i-chose-1phb"&gt;here&lt;/a&gt;), you know I'm a "vibe coder"—someone who codes by intuition, AI assistance, and sheer determination rather than formal training.&lt;/p&gt;

&lt;p&gt;I'd built a few projects before (a task manager, a coloring page generator, a blog system). But those were hobby projects. This was different.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This had to work. Real customers. Real money. Real consequences.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Decision Point
&lt;/h2&gt;

&lt;p&gt;Here's what I knew I needed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Customer Management&lt;/strong&gt; - Profiles, contact info, delivery routes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription System&lt;/strong&gt; - Daily deliveries, 2-day patterns (like Mon: 1L, Tue: 2L, repeat)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modification Tracking&lt;/strong&gt; - Skips, increases, decreases with date ranges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order Generation&lt;/strong&gt; - Automated daily orders from subscriptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery Confirmation&lt;/strong&gt; - Track what was actually delivered vs planned&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment Management&lt;/strong&gt; - Track payments and outstanding amounts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invoice Generation&lt;/strong&gt; - Professional PDFs with GST compliance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales Tracking&lt;/strong&gt; - Manual cash/credit sales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reports&lt;/strong&gt; - Production summaries, delivery lists, outstanding reports&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I looked at existing dairy management software:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Option 1:&lt;/strong&gt; Big ERPs - ₹50,000-₹2,00,000+ setup costs + monthly fees&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Option 2:&lt;/strong&gt; Generic apps - Didn't fit our specific workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Option 3:&lt;/strong&gt; Excel - What we were already doing (and failing at)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Option 4:&lt;/strong&gt; Build it myself - ₹0 + my time + learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The choice was obvious. I'd rather spend time learning than money we don't have.&lt;/p&gt;
&lt;h2&gt;
  
  
  Day 1: August 5, 2025 - "Let's Just Start"
&lt;/h2&gt;

&lt;p&gt;I opened Claude Code at 6:00 PM IST with one simple goal: &lt;strong&gt;Get something running.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't have a perfect plan. I didn't have a complete design. I just had a requirements document I'd typed out explaining what a dairy business needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6:00 PM - Project Setup&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;create-next-app milk_subs &lt;span class="nt"&gt;--typescript&lt;/span&gt; &lt;span class="nt"&gt;--tailwind&lt;/span&gt; &lt;span class="nt"&gt;--app&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;milk_subs
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I had no idea what half of those flags meant. But Claude Code did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7:30 PM - Database Schema&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By 7:30 PM, I had a Supabase PostgreSQL database with 9 tables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;customers&lt;/code&gt; - Billing info, contact details, routes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;products&lt;/code&gt; - Cow Milk (₹75/L), Buffalo Milk (₹80/L)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;routes&lt;/code&gt; - Route 1 &amp;amp; Route 2 with personnel&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;base_subscriptions&lt;/code&gt; - Daily and 2-day pattern support&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;modifications&lt;/code&gt; - Temporary changes with date ranges&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;daily_orders&lt;/code&gt; - Generated orders with pricing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;deliveries&lt;/code&gt; - Actual delivery tracking&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;payments&lt;/code&gt; - Payment history&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;product_pricing_history&lt;/code&gt; - Price audit trail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5bvwcsknbg3aoinvw85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5bvwcsknbg3aoinvw85.png" alt="SCREENSHOT: Today's Supabase table and views list (didn't have old screenshot so used this.)" width="636" height="1098"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I didn't design this schema. I described my business to Claude Code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We deliver milk in the morning and evening. Some customers get 1L every day. Some get 1L on odd days and 2L on even days. We need to track when they skip, increase, or decrease deliveries temporarily. We need to know what we actually delivered vs what was planned. We need to track payments and outstanding balances."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude Code turned that into a normalized database schema with foreign keys, constraints, and proper relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9:00 PM - Authentication + UI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By 9 PM, I had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login/logout working (Supabase Auth)&lt;/li&gt;
&lt;li&gt;Protected admin routes&lt;/li&gt;
&lt;li&gt;A responsive dashboard with a sidebar&lt;/li&gt;
&lt;li&gt;Mobile-friendly navigation&lt;/li&gt;
&lt;li&gt;Indian Rupee (₹) formatting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;10:00 PM - Customer Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By 10 PM, I could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add customers with billing names and contact persons&lt;/li&gt;
&lt;li&gt;Store 3 phone numbers per customer&lt;/li&gt;
&lt;li&gt;Assign them to routes&lt;/li&gt;
&lt;li&gt;Set delivery times (Morning/Evening)&lt;/li&gt;
&lt;li&gt;Track opening balances&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;11:00 PM - Subscription System&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where it got interesting. I needed to explain subscription patterns:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Some customers want the same quantity every day—that's easy. But some want alternating patterns. Like Day 1: 1 liter, Day 2: 2 liters, then repeat. Based on a start date."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt; "Got it. We'll store daily_quantity for fixed subscriptions and pattern_day1_quantity + pattern_day2_quantity + pattern_start_date for alternating patterns."&lt;/p&gt;

&lt;p&gt;By 11 PM, the subscription system was working. I could create subscriptions, see 14-day pattern previews, and the system would automatically calculate which day of the pattern we were on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbx2bgjw7c2g3upoi09p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbx2bgjw7c2g3upoi09p.png" alt="SCREENSHOT: Subscription creation form or pattern preview" width="800" height="938"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Actually Understood vs What I Faked
&lt;/h2&gt;

&lt;p&gt;Let me be honest about what I knew at this point:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Understood:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forms collect data and save it to database&lt;/li&gt;
&lt;li&gt;Tables display data from database&lt;/li&gt;
&lt;li&gt;Dates are hard (timezone issues everywhere)&lt;/li&gt;
&lt;li&gt;Buttons need to do something when clicked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I Had No Clue About:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What "Server Actions" were&lt;/li&gt;
&lt;li&gt;Why some components were "client" and some were "server"&lt;/li&gt;
&lt;li&gt;What the hell "middleware" did&lt;/li&gt;
&lt;li&gt;Why everyone kept talking about "revalidation"&lt;/li&gt;
&lt;li&gt;What Row Level Security actually secured&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I Just Trusted:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If Claude Code said it needed TypeScript, fine&lt;/li&gt;
&lt;li&gt;If it said use Zod for validation, okay&lt;/li&gt;
&lt;li&gt;If it said I need this package, I installed it&lt;/li&gt;
&lt;li&gt;If it compiled without errors, good enough&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Resources That Saved Me
&lt;/h2&gt;

&lt;p&gt;I spent the gaps between coding sessions watching YouTube:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@RAmjad" rel="noopener noreferrer"&gt;Ray Amjad&lt;/a&gt;&lt;/strong&gt; - AI Coding expert with amazing simplicity. Too much to learn from him.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@rileybrownai" rel="noopener noreferrer"&gt;Riley Brown&lt;/a&gt;&lt;/strong&gt; - How to quickly develop an app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@iamseankochel" rel="noopener noreferrer"&gt;Sean Kochel&lt;/a&gt;&lt;/strong&gt; - Prompting guides and avoiding pitfalls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/@100xEngineers" rel="noopener noreferrer"&gt;100x Engineers&lt;/a&gt;&lt;/strong&gt; - Varun Mayya, an amazing Indian content creator on AI.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I didn't watch them to become an expert. I watched them to understand just enough to ask Claude Code better questions.&lt;/p&gt;

&lt;p&gt;When Claude Code said "We'll use Server Actions for this," I'd watch a 10-minute video on Server Actions. Not to master them, but to know what Claude was talking about.&lt;/p&gt;

&lt;h2&gt;
  
  
  End of Day 1: 11:30 PM
&lt;/h2&gt;

&lt;p&gt;By 11:30 PM on August 5, 2025, I had:&lt;/p&gt;

&lt;p&gt;✅ Complete database structure (9 tables)&lt;br&gt;
✅ Authentication system&lt;br&gt;
✅ Customer management (CRUD operations)&lt;br&gt;
✅ Subscription management with 2-day patterns&lt;br&gt;
✅ Mobile-responsive UI&lt;br&gt;
✅ All code compiling without errors&lt;/p&gt;

&lt;p&gt;From 6:00 PM to 11:30 PM. &lt;strong&gt;5.5 hours.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't write most of this code. Claude Code did. But I understood the business logic. I tested every feature. I knew what each button should do and verified that it worked.&lt;/p&gt;

&lt;p&gt;Was the code perfect? Probably not.&lt;br&gt;
Did it work? Yes.&lt;br&gt;
Could I keep building on it? Absolutely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for You
&lt;/h2&gt;

&lt;p&gt;If you're a small business owner like me, sitting with Excel sheets that aren't cutting it anymore, here's what I learned on Day 1:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You Don't Need to Know Everything&lt;/strong&gt; - I didn't know React, Next.js, or TypeScript. I learned just enough to direct Claude Code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start with What You Know&lt;/strong&gt; - I knew my dairy business. I knew what deliveries looked like, what customers needed, what went wrong. That was enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real Problems &amp;gt; Perfect Code&lt;/strong&gt; - I wasn't trying to build the "best" ERP. I was trying to stop losing ₹800 on spoiled milk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI is a Co-Pilot, Not Auto-Pilot&lt;/strong&gt; - Claude Code couldn't read my mind. I had to explain my business clearly. The clearer I was, the better it coded.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ship Fast, Learn Faster&lt;/strong&gt; - By the end of Day 1, I had working software. Not finished. Not perfect. But working. That momentum is everything.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;In Part 2, I'll take you through the full development journey—from modifications and orders to the nightmare that was PDF invoice generation, the payment allocation system that almost broke me, and the IST timezone migration that made me question everything.&lt;/p&gt;

&lt;p&gt;Spoiler: I built a complete dairy ERP in about 3 weeks. It's now running in production with 145 real customers.&lt;/p&gt;

&lt;p&gt;But it wasn't smooth. There were moments I wanted to quit. Moments I had no idea what I was doing. Moments where Claude Code said "this is a breaking change" and I panicked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 2 coming soon: "Vibe Coding Through Subscriptions, Payments, and PDF Nightmares"&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Read the series:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Part 1: Why I Built an ERP (You Are Here)&lt;/li&gt;
&lt;li&gt;Part 2: The Coding Journey &lt;/li&gt;
&lt;li&gt;Part 3: Production Testing &amp;amp; Lessons &lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;About Me:&lt;/strong&gt; I'm Dishank, a dairy farmer in Jalgaon, Maharashtra, learning to code with AI. Follow my journey at &lt;a href="https://dev.to/dishankg"&gt;dev.to/dishankg&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to try this yourself?&lt;/strong&gt; You don't need my exact code. You need Claude Code (or similar AI tools), a clear problem, and the willingness to ask "dumb" questions until things work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Questions? Comments?&lt;/strong&gt; Drop them below! I'll answer everything honestly—including the stuff I still don't understand.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This and all the posts in this series are written with full assistance from Claude Code, but reflect my actual stories, experiences and problems to the fullest&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next up: Part 2 - where things get messy, I learn about database migrations the hard way, and invoice generation becomes my nemesis.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ai</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>From Non-Coder to Production in 4 Days: My AI-Powered App Journey (And Why Imperfect is Perfect)</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Tue, 05 Aug 2025 08:43:36 +0000</pubDate>
      <link>https://dev.to/dishankg/from-non-coder-to-production-in-4-days-my-ai-powered-app-journey-and-why-imperfect-is-perfect-56n6</link>
      <guid>https://dev.to/dishankg/from-non-coder-to-production-in-4-days-my-ai-powered-app-journey-and-why-imperfect-is-perfect-56n6</guid>
      <description>&lt;p&gt;&lt;em&gt;Part 3 of my AI-powered transformation series&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4 days ago, I couldn't code. Today also I cannot code. I have a live app with real users.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm not talking about a simple landing page or a basic CRUD tutorial. I'm talking about a &lt;a href="https://smart-task-tracker-mofq.vercel.app/" rel="noopener noreferrer"&gt;full-production task management application&lt;/a&gt; with a real database, authentication, drag-and-drop functionality (well, mostly), comprehensive testing, and deployment pipelines that would make professional developers nod in approval.&lt;/p&gt;

&lt;p&gt;The catch? The UI looks like it was designed by someone who learned design from early 2000s websites (spoiler: that someone is me), and half the features I envisioned are still broken or missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And you know what? I shipped it anyway.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the story of how AI transformed me from someone who gets overwhelmed by the idea of coding into someone who ships production software—imperfections and all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Context: Building on My AI Journey
&lt;/h2&gt;

&lt;p&gt;If you've been following my series, you know this isn't my first rodeo with AI-assisted development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/from-zero-to-portfolio-in-one-week-how-ai-powered-personality-analysis-transformed-my-coding-224d"&gt;Part 1: How AI personality analysis transformed my approach to learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/ai-pair-programming-magic-building-an-advanced-blog-system-in-one-session-and-why-i-chose-1phb"&gt;Part 2: Building an advanced blog system in one session&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But this time was different. This time, I wasn't just adding features to an existing project. I was building something from absolute zero, with real users in mind, and with every intention of actually shipping it to production.&lt;/p&gt;

&lt;p&gt;The pressure was real. The ENTP perfectionist in me was screaming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 1: The Endless Possibilities Trap
&lt;/h2&gt;

&lt;p&gt;As an ENTP, I have a superpower: I can see infinite possibilities in any project. &lt;/p&gt;

&lt;p&gt;This is also my kryptonite.&lt;/p&gt;

&lt;p&gt;I started my conversation with Claude Code with a simple idea: "I want to build a task management app." Within minutes, I had envisioned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hierarchical task structures with unlimited nesting&lt;/li&gt;
&lt;li&gt;AI-powered productivity insights&lt;/li&gt;
&lt;li&gt;Energy-based scheduling algorithms&lt;/li&gt;
&lt;li&gt;Team collaboration features&lt;/li&gt;
&lt;li&gt;Advanced analytics dashboards&lt;/li&gt;
&lt;li&gt;Template systems&lt;/li&gt;
&lt;li&gt;Bulk operations&lt;/li&gt;
&lt;li&gt;Time tracking with focus metrics&lt;/li&gt;
&lt;li&gt;Mobile apps&lt;/li&gt;
&lt;li&gt;Calendar integrations&lt;/li&gt;
&lt;li&gt;And about 47 other "essential" features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sound familiar, fellow ENTPs?&lt;/p&gt;

&lt;p&gt;This is where most of my projects die—drowning in the ocean of possibilities before I ever write a single line of code.&lt;/p&gt;

&lt;p&gt;But something was different this time. Claude Code, acting like the senior developer I never had, gently guided me back to reality:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Let's start with core task management. We can build a foundation that supports all these features, but ship something functional first."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That was my first lesson: &lt;strong&gt;AI doesn't just write code—it provides the discipline I lack.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 2-3: AI as My Senior Developer
&lt;/h2&gt;

&lt;p&gt;Here's what working with Claude Code actually looks like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "I want users to be able to drag tasks to reorder them, but I don't know how drag and drop works."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; "I'll implement this using @dnd-kit, which is the modern standard. Here's the complete implementation with accessibility features..."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[5 minutes later, I have working drag and drop]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "This needs to work on mobile too, and what about database consistency, and what if users try to drag while the network is slow, and..."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; "Let's implement optimistic updates with rollback handling. Here's how we'll structure the state management..."&lt;/p&gt;

&lt;p&gt;This pattern repeated dozens of times. I'd describe what I wanted (often badly), and Claude would:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Interpret my unclear requirements&lt;/strong&gt; into technical specifications&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggest industry-standard solutions&lt;/strong&gt; I'd never heard of&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement complete, production-ready code&lt;/strong&gt; with error handling I wouldn't have thought of&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explain the decisions&lt;/strong&gt; so I actually learned something&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It was like having a patient senior developer who never got annoyed when I asked "why" for the hundredth time.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture That Emerged
&lt;/h3&gt;

&lt;p&gt;What's crazy is that the app Claude helped me build has architecture that would impress professional developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15 with React 19&lt;/strong&gt; (bleeding edge tech stack)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript throughout&lt;/strong&gt; (type safety I didn't even know I needed)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase backend&lt;/strong&gt; with 10 comprehensive database migrations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row Level Security policies&lt;/strong&gt; (because apparently user data should be secure, who knew?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive testing&lt;/strong&gt; with Jest and Playwright&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production deployment pipeline&lt;/strong&gt; with Vercel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance optimization&lt;/strong&gt; with lazy loading and caching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I couldn't have designed this architecture if you gave me 6 months to study. But through conversation with AI, we built it in days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 4: The Reality Check
&lt;/h2&gt;

&lt;p&gt;By day 4, I had something that worked. Sort of.&lt;/p&gt;

&lt;p&gt;Here's what was beautifully functional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users could sign up and create tasks ✅&lt;/li&gt;
&lt;li&gt;Database relationships worked perfectly ✅&lt;/li&gt;
&lt;li&gt;Authentication was rock solid ✅&lt;/li&gt;
&lt;li&gt;The app was responsive and fast ✅&lt;/li&gt;
&lt;li&gt;Real-time updates worked like magic ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's what made me cringe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The drag and drop feature worked... sometimes 😅&lt;/li&gt;
&lt;li&gt;My font choices looked like a ransom note 🤦‍♂️&lt;/li&gt;
&lt;li&gt;The overall UI had the aesthetic appeal of a government form 📋&lt;/li&gt;
&lt;li&gt;Half the advanced features I'd planned were still broken 🚧&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This is where the old me would have stopped.&lt;/strong&gt; "It's not ready. It's not perfect. What will people think?"&lt;/p&gt;

&lt;p&gt;But here's what I realized: &lt;strong&gt;70% done and shipped beats 100% perfect and never launched.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Wins (Despite Being a Non-Coder)
&lt;/h2&gt;

&lt;p&gt;Let me blow your mind with what AI helped me accomplish:&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Design That Scales
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- One of 10 migration files that create a production-ready schema&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;tasks&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="n"&gt;UUID&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;gen_random_uuid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="n"&gt;UUID&lt;/span&gt; &lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="n"&gt;task_status&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="s1"&gt;'todo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;priority&lt;/span&gt; &lt;span class="n"&gt;priority_level&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="s1"&gt;'medium'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;parent_task_id&lt;/span&gt; &lt;span class="n"&gt;UUID&lt;/span&gt; &lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;sort_order&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;-- ... 20+ more thoughtfully designed columns&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Row Level Security (because security matters)&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;tasks&lt;/span&gt; &lt;span class="n"&gt;ENABLE&lt;/span&gt; &lt;span class="k"&gt;ROW&lt;/span&gt; &lt;span class="k"&gt;LEVEL&lt;/span&gt; &lt;span class="k"&gt;SECURITY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;POLICY&lt;/span&gt; &lt;span class="nv"&gt;"Users can only access their own tasks"&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;tasks&lt;/span&gt;
    &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Testing That Would Make Pros Proud
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;81 unit tests&lt;/strong&gt; covering critical functionality&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-browser end-to-end testing&lt;/strong&gt; with Playwright&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production test suite&lt;/strong&gt; that validates deployment readiness&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility testing&lt;/strong&gt; because everyone should be able to use the app&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance Optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;282kB initial bundle size&lt;/strong&gt; (optimized for speed)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy loading&lt;/strong&gt; for non-critical components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimistic updates&lt;/strong&gt; for instant UI feedback&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comprehensive caching strategy&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Production Infrastructure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automatic deployments&lt;/strong&gt; on every commit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment management&lt;/strong&gt; for different stages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error tracking&lt;/strong&gt; and performance monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database backups&lt;/strong&gt; and security policies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't no-code. This isn't a template. This is &lt;strong&gt;real, scalable, professional-grade software architecture&lt;/strong&gt; that I built without knowing how to code.&lt;/p&gt;

&lt;h2&gt;
  
  
  From MVP to Minimum Lovable Product
&lt;/h2&gt;

&lt;p&gt;The moment of truth came when I hit the deploy button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would it work? Would real users be able to sign up and use it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I held my breath, visited the live URL, and... it worked. I created an account, added tasks, and watched them sync in real-time. The authentication flow was smooth. The responsive design actually worked on my phone.&lt;/p&gt;

&lt;p&gt;Sure, the drag-and-drop was glitchy. Sure, the colors made my designer friends cry. But &lt;strong&gt;it worked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;More importantly, &lt;strong&gt;it provided real value.&lt;/strong&gt; I started using it for my own tasks. Friends who tested it said, "The UI needs work, but this is actually useful."&lt;/p&gt;

&lt;p&gt;That's when it hit me: &lt;strong&gt;Perfect is the enemy of shipped.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Democratization of Development
&lt;/h2&gt;

&lt;p&gt;Here's what this experience taught me about AI and development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No-code tools are amazing&lt;/strong&gt; for specific use cases. But they hit a ceiling fast. Want custom authentication flows? Complex data relationships? Real-time features? Advanced testing? You're out of luck.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traditional coding&lt;/strong&gt; requires years of study before you can build anything meaningful. The learning curve is steep, and by the time you're proficient, your initial enthusiasm is long gone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-assisted development&lt;/strong&gt; gives you the best of both worlds: the unlimited possibilities of real code with the approachability of guided conversation.&lt;/p&gt;

&lt;p&gt;The gap between "I have an idea" and "I have a working product" has shrunk from years to days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Permission to Ship Imperfect
&lt;/h2&gt;

&lt;p&gt;If you're reading this and thinking, "I have an idea for an app, but I don't know how to code," here's my challenge to you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop perfecting. Start shipping.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your first version will be imperfect. The UI will look amateur. Features will be buggy. People might judge your aesthetic choices (they should—mine are objectively bad).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ship it anyway.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because here's what happens when you ship:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You learn what users actually want (spoiler: it's different from what you think)&lt;/li&gt;
&lt;li&gt;You get real feedback instead of imaginary concerns&lt;/li&gt;
&lt;li&gt;You build confidence in your ability to create&lt;/li&gt;
&lt;li&gt;You join the exclusive club of people who ship, not just dream&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;My task tracker is live at &lt;a href="https://smart-task-tracker-mofq.vercel.app/" rel="noopener noreferrer"&gt;smart-task-tracker-mofq.vercel.app&lt;/a&gt;. It's 70% complete, aesthetically challenged, and I couldn't be prouder of it.&lt;/p&gt;

&lt;p&gt;The GitHub repo is &lt;a href="https://github.com/dishankgupta/smart_task_tracker" rel="noopener noreferrer"&gt;public&lt;/a&gt; because learning should be transparent. Poke around. Judge my code. Learn from my mistakes.&lt;/p&gt;

&lt;p&gt;But most importantly: &lt;strong&gt;start your own journey.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI has democratized development in ways we're only beginning to understand. The question isn't whether you're qualified to build software—it's whether you're brave enough to ship something imperfect and learn in public.&lt;/p&gt;

&lt;p&gt;Your move.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What project have you been putting off because it won't be perfect? What would you build if you knew you could ship it in 4 days? Let me know in the comments—I'd love to cheer you on.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Previous posts in this series:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/from-zero-to-portfolio-in-one-week-how-ai-powered-personality-analysis-transformed-my-coding-224d"&gt;Part 1: From Zero to Portfolio in One Week&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/dishankg/ai-pair-programming-magic-building-an-advanced-blog-system-in-one-session-and-why-i-chose-1phb"&gt;Part 2: AI Pair Programming Magic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connect with me:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow my journey on &lt;a href="https://dev.to/dishankg"&gt;Dev.to&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Check out the live app: &lt;a href="https://smart-task-tracker-mofq.vercel.app/" rel="noopener noreferrer"&gt;Smart Task Tracker&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Explore the code: &lt;a href="https://github.com/dishankgupta/smart_task_tracker" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This post was made with assistance from Claude Code.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a Coloring Page Generator with Google AI Studio: From Prompt to Production in 30 Minutes</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Fri, 25 Jul 2025 13:46:49 +0000</pubDate>
      <link>https://dev.to/dishankg/building-a-coloring-page-generator-with-google-ai-studio-from-prompt-to-production-in-30-minutes-13pg</link>
      <guid>https://dev.to/dishankg/building-a-coloring-page-generator-with-google-ai-studio-from-prompt-to-production-in-30-minutes-13pg</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I set out to build a simple yet delightful web app that transforms text descriptions into black-and-white coloring pages for kids. The key prompt I used was: &lt;em&gt;"Build a single-page, fully functional web application using React that allows users to generate black-and-white coloring book pages from a simple text description"&lt;/em&gt; - but the magic happened when I asked Google AI Studio to enhance each user prompt with specific coloring book styling instructions like "simple bold outlines, black and white, no shading, clean lines, white background." I utilized the Imagen API for image generation and implemented native Web Share functionality for easy sharing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;You can try the live app here: (Link Removed) As the free Tier was done and I couldn't afford paying for it. When it worked it worked wonders.&lt;br&gt;
Github Repo Link: &lt;a href="https://github.com/dishankgupta/coloring-page-generator.git" rel="noopener noreferrer"&gt;Coloring-Page-Generator.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvi316d2lvg92k1wh2nt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvi316d2lvg92k1wh2nt.png" alt="Coloring Page Generator App Screenshot" width="800" height="987"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app features a clean, minimalistic interface where users can type simple descriptions like "baby in the hands of mother" and instantly get beautiful, kid-friendly coloring pages. The generated images maintain perfect coloring book aesthetics with bold outlines and no shading.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;This project completely blew my mind in terms of speed and precision. Going from idea to a fully deployed, working app took less than 30 minutes - and that includes the time spent crafting the perfect prompt!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What surprised me most:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt engineering is an art&lt;/strong&gt;: The way Google AI Studio helped me structure the initial prompt was incredible. It asked exactly the right clarifying questions about target audience, UI complexity, and technical requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic prompt enhancement&lt;/strong&gt;: The genius move was having the app automatically enhance user prompts. When someone types "dinosaur," the API actually receives "coloring book page for kids, dinosaur, simple bold outlines, black and white, no shading, clean lines, white background." This consistency is what makes the results so reliably good.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imagen API quality&lt;/strong&gt;: I expected decent results, but the quality and speed of the Imagen API genuinely caught me off guard. Every single generation looks like it came from a professional coloring book.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Specificity matters&lt;/strong&gt;: The more detailed and context-rich your initial prompt, the better your final product will be.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI understands user experience&lt;/strong&gt;: Google AI Studio didn't just generate code - it thought through the entire user journey, including loading states, error handling, and responsive design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern web APIs are powerful&lt;/strong&gt;: Implementing native sharing functionality with just a few lines of code shows how far web standards have come.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The most magical moment was seeing the first generated image - a perfect coloring page that any parent would be happy to print out for their kids. It reinforced my belief that we're living in an incredible time where complex, useful applications can go from concept to reality in minutes, not months.&lt;/p&gt;

&lt;p&gt;The whole experience felt less like traditional coding and more like having a conversation with an incredibly skilled developer who just happens to work at superhuman speed!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was written with assistance from Claude AI to help structure and articulate my experience building with Google AI Studio.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>AI Pair Programming Magic: Building an Advanced Blog System in One Session (And Why I Chose Complexity Over Simplicity)</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Fri, 25 Jul 2025 10:31:00 +0000</pubDate>
      <link>https://dev.to/dishankg/ai-pair-programming-magic-building-an-advanced-blog-system-in-one-session-and-why-i-chose-1phb</link>
      <guid>https://dev.to/dishankg/ai-pair-programming-magic-building-an-advanced-blog-system-in-one-session-and-why-i-chose-1phb</guid>
      <description>&lt;p&gt;&lt;em&gt;Following up on my journey from zero to portfolio developer, this is the story of how AI assistance transformed a simple "add a blog section" request into a sophisticated, future-proof system—all in a single conversation.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup: A Portfolio That Needed Something More
&lt;/h2&gt;

&lt;p&gt;Remember my first post about going from zero to portfolio in one week? Well, that portfolio was working great, but something was missing. I had this beautiful website showcasing my projects, but no way to share my learning journey or connect with fellow developers through content.&lt;/p&gt;

&lt;p&gt;The obvious solution? Add a blog section. Simple, right?&lt;/p&gt;

&lt;p&gt;But here's where my ENTP personality kicked in. As a "perfectionistic type and thrill seeker," I couldn't just settle for basic blog links. I wanted something that would grow with me, something sophisticated, something... &lt;em&gt;more&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter AI Pair Programming
&lt;/h2&gt;

&lt;p&gt;I opened up Claude Projects with my GitHub repo connected, and what happened next was pure magic. The AI had instant access to my entire project—my themes, styles, component structure, everything. No tedious explanation of my codebase, no copy-pasting chunks of CSS. Just seamless understanding.&lt;/p&gt;

&lt;p&gt;"I want to add a blog section for my dev.to posts," I said.&lt;/p&gt;

&lt;p&gt;What followed was the most elegant technical conversation I've ever had.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Decision Point: Simple vs. Sophisticated
&lt;/h2&gt;

&lt;p&gt;Claude presented me with three options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Simple External Links&lt;/strong&gt; (30 minutes) - Basic cards linking to dev.to&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic API Integration&lt;/strong&gt; (2-3 hours) - Automatic post fetching
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Embedded System&lt;/strong&gt; (4-5 hours) - Full modal previews, pagination, interactive features&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Old me would have gone for option 1. Quick, functional, done.&lt;/p&gt;

&lt;p&gt;But new me—armed with AI assistance and an ENTP's love for comprehensive solutions—saw the bigger picture. Why build for today when you can build for tomorrow?&lt;/p&gt;

&lt;p&gt;"Let's go with Option 3," I said. "I love the advanced option."&lt;/p&gt;

&lt;h2&gt;
  
  
  The Implementation: When AI Just Gets It
&lt;/h2&gt;

&lt;p&gt;Here's where things got incredible. Claude didn't just provide code—it provided a complete system that perfectly matched my existing design language:&lt;/p&gt;

&lt;h3&gt;
  
  
  Seamless Theme Integration
&lt;/h3&gt;

&lt;p&gt;The new blog section automatically inherited my light/dark theme toggle, CSS custom properties, and responsive design patterns. No theme conflicts, no style inconsistencies. It was like the blog system had always been part of my portfolio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zero-Maintenance Architecture
&lt;/h3&gt;

&lt;p&gt;The system automatically fetches posts from the dev.to API, scales from 1 post to unlimited posts, and handles loading states gracefully. Publish a new post on dev.to? It appears on my portfolio automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Future-Proof Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1 post&lt;/strong&gt;: Clean, featured display&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 posts&lt;/strong&gt;: Responsive grid layout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6+ posts&lt;/strong&gt;: Automatic "Load More" functionality&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12+ posts&lt;/strong&gt;: Full pagination system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The "Aha!" Moment: It Worked in One Go
&lt;/h2&gt;

&lt;p&gt;I was expecting iterations, debugging sessions, style conflicts. Instead? &lt;strong&gt;It worked perfectly on the first try.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The HTML slotted seamlessly into my existing structure. The CSS extended my design system flawlessly. The JavaScript integrated with my existing classes without conflicts. &lt;/p&gt;

&lt;p&gt;Seeing my first blog post display with that beautiful preview modal, complete with reading time, engagement metrics, and my exact color scheme—that was my aha moment. This wasn't just adding a feature; this was elevating my entire portfolio.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tools That Made It Possible
&lt;/h2&gt;

&lt;p&gt;This success story wouldn't exist without the right AI development stack:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Cursor IDE&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;My go-to for "vibe coding," but I discovered it has limitations with UI/UX design decisions. Great for code implementation, not as strong for design aesthetics.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Claude Projects&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The UI/UX genius in this partnership. With my GitHub repo connected, Claude understood my design language and created components that felt native to my existing system.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;GitHub Integration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This was the secret sauce. By connecting my repository, Claude had complete context about my project structure, naming conventions, and design patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Replit&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Where my original portfolio was born, providing the foundation that made this upgrade possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance &amp;amp; Maintenance: The Numbers
&lt;/h2&gt;

&lt;p&gt;The resulting system is surprisingly efficient:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Loading time&lt;/strong&gt;: Blog section loads in ~200ms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API calls&lt;/strong&gt;: Cached for performance, only fetches when needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bundle size&lt;/strong&gt;: Added minimal JavaScript footprint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance&lt;/strong&gt;: Literally zero—posts update automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare this to manual blog management where I'd need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manually add each new post&lt;/li&gt;
&lt;li&gt;Update engagement metrics&lt;/li&gt;
&lt;li&gt;Manage responsive layouts&lt;/li&gt;
&lt;li&gt;Handle edge cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The advanced system eliminates all of this while providing a better user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons for Fellow AI-Assisted Developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Context is Everything
&lt;/h3&gt;

&lt;p&gt;Don't underestimate the power of giving AI full project context. The GitHub integration made the difference between generic code and perfectly integrated features.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Choose Your AI Tools Strategically
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt;: Implementation and coding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude&lt;/strong&gt;: Design decisions and architecture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Together&lt;/strong&gt;: Unstoppable&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Don't Fear Complexity
&lt;/h3&gt;

&lt;p&gt;With AI assistance, the time difference between "simple" and "sophisticated" isn't what it used to be. Sometimes the advanced solution is worth it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Build for Growth
&lt;/h3&gt;

&lt;p&gt;Your blog section should handle your future success. If you write 50 posts next year, will your system still work elegantly?&lt;/p&gt;

&lt;h2&gt;
  
  
  The ENTP Advantage: Why I Love Building This Way
&lt;/h2&gt;

&lt;p&gt;As someone who thrives on variety and big-picture thinking, AI-assisted development feels like coming home. I can focus on the creative decisions—the "what" and "why"—while AI handles the implementation details.&lt;/p&gt;

&lt;p&gt;The perfectionist in me loves that we built something genuinely excellent, not just functional. The thrill-seeker loves that we pushed boundaries instead of settling for basic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;This blog system is just the beginning. With this foundation, I can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add content filtering by topic&lt;/li&gt;
&lt;li&gt;Implement search functionality
&lt;/li&gt;
&lt;li&gt;Create series groupings&lt;/li&gt;
&lt;li&gt;Add newsletter integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But more importantly, I can focus on what matters most: creating great content and sharing my development journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Fellow Career Changers: The Takeaway
&lt;/h2&gt;

&lt;p&gt;Six months ago, building a dynamic, API-integrated blog system would have felt impossible. Today, it happened in a single conversation.&lt;/p&gt;

&lt;p&gt;The future of development isn't about replacing human creativity—it's about amplifying it. AI doesn't make the decisions; it makes your decisions possible.&lt;/p&gt;

&lt;p&gt;Whether you're week one or year one in your development journey, don't limit yourself to "beginner" solutions. With the right AI assistance, you can build professional-grade features from day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Build Something Amazing?
&lt;/h2&gt;

&lt;p&gt;Here's your AI-assisted development toolkit:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Essential Tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cursor.sh/" rel="noopener noreferrer"&gt;Cursor IDE&lt;/a&gt; - AI-powered coding&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://claude.ai/" rel="noopener noreferrer"&gt;Claude Projects&lt;/a&gt; - Design and architecture decisions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; - Version control and AI context&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.forem.com/api" rel="noopener noreferrer"&gt;dev.to API&lt;/a&gt; - Content integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Framework:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect your AI to your full project context&lt;/li&gt;
&lt;li&gt;Think bigger than your initial request&lt;/li&gt;
&lt;li&gt;Choose tools that complement each other&lt;/li&gt;
&lt;li&gt;Build for your future self, not just today&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;My Advanced Blog Implementation:&lt;/strong&gt;&lt;br&gt;
Check out the live result on my portfolio, or follow along as I continue documenting this AI-assisted development journey.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was created with assistance from Claude Projects, which had full access to my GitHub repository and helped architect the perfect solution for my specific needs. This is post #2 in my series documenting the journey from zero to software developer using AI-assisted learning and development.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's your experience with AI pair programming? Have you tried building something more advanced than you thought possible? Drop a comment below—I'd love to connect with fellow AI-assisted developers!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; #AI #WebDev #Career #Learning #Portfolio #DevTo #Beginners #Programming&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>From Zero to Portfolio in One Week: How AI-Powered Personality Analysis Transformed My Coding Journey</title>
      <dc:creator>Dishank Gupta</dc:creator>
      <pubDate>Thu, 24 Jul 2025 10:51:45 +0000</pubDate>
      <link>https://dev.to/dishankg/from-zero-to-portfolio-in-one-week-how-ai-powered-personality-analysis-transformed-my-coding-224d</link>
      <guid>https://dev.to/dishankg/from-zero-to-portfolio-in-one-week-how-ai-powered-personality-analysis-transformed-my-coding-224d</guid>
      <description>&lt;h2&gt;
  
  
  The Spark That Started Everything
&lt;/h2&gt;

&lt;p&gt;At 35, I never thought software development was an option for me. Traditional coding bootcamps? Too rigid. Computer science degree? Too late. But one day, scrolling through my Google feed, I stumbled across an article about something called "Vibe Coding" - using AI tools to learn programming in a completely different way.&lt;/p&gt;

&lt;p&gt;Curiosity got the better of me. What did I have to lose?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Game-Changing Video
&lt;/h2&gt;

&lt;p&gt;While exploring Vibe Coding, I discovered this incredible video by Rick Mulready: [9 Mind-Blowing Use Cases of Perplexity Labs]&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://youtu.be/9u9jAIl80ac?si=W4TI7eBlhhD0dZO0" rel="noopener noreferrer"&gt;https://youtu.be/9u9jAIl80ac?si=W4TI7eBlhhD0dZO0&lt;/a&gt;).&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/9u9jAIl80ac"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Among the various use cases he demonstrated, one particularly caught my attention - using Perplexity Labs to get a comprehensive personality analysis that goes way beyond those basic online quizzes.&lt;/p&gt;

&lt;p&gt;I thought, "Why not?" and followed along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Revelation: Understanding My "Laziness"
&lt;/h2&gt;

&lt;p&gt;The personality analysis hit me like a lightning bolt. For years, I'd labeled myself as "lazy" because I couldn't stick to one type of work continuously. I'd jump from project to project, lose interest in things that once excited me, and felt like something was fundamentally wrong with my work ethic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The analysis revealed I'm an ENTP (The Innovative Problem Solver) with these key traits:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intellectual Strengths:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exceptional curiosity and openness to new experiences&lt;/li&gt;
&lt;li&gt;Strong logical reasoning and analytical thinking&lt;/li&gt;
&lt;li&gt;Natural pattern recognition and ability to see connections others miss&lt;/li&gt;
&lt;li&gt;Innovative problem-solving that combines logic with creativity&lt;/li&gt;
&lt;li&gt;Quick learning ability, especially through trial and error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Breakthrough Insight:&lt;/strong&gt;&lt;br&gt;
I wasn't lazy - I was wired for variety! My brain thrives on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple projects simultaneously&lt;/li&gt;
&lt;li&gt;Novel approaches to problem-solving&lt;/li&gt;
&lt;li&gt;Intellectual challenges that require creativity&lt;/li&gt;
&lt;li&gt;Learning through hands-on experimentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suddenly, everything made sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Analysis to Action Plan
&lt;/h2&gt;

&lt;p&gt;Energized by this self-discovery, I used Perplexity Labs again - this time to create a personalized career development plan. The AI analyzed my ENTP personality and crafted a 24-month software development roadmap that actually works &lt;em&gt;with&lt;/em&gt; my natural tendencies instead of against them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The plan included:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weekly 24-hour learning commitment (manageable for my lifestyle)&lt;/li&gt;
&lt;li&gt;Project variety to maintain interest&lt;/li&gt;
&lt;li&gt;AI-assisted learning through tools like Cursor and Claude&lt;/li&gt;
&lt;li&gt;Focus on building while learning, not just studying theory&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Week One Results: The Portfolio Website
&lt;/h2&gt;

&lt;p&gt;The spark I felt was incredible. It made me hungry for more and more and MORE.&lt;/p&gt;

&lt;p&gt;Instead of starting with endless tutorials, I dove straight into building. Using Cursor (an AI-powered IDE), Replit and guidance from Claude, I created my first portfolio website in just one week.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsxjfsl6fvzw3mznaxjn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsxjfsl6fvzw3mznaxjn.png" alt="Landing page of my Portfolio"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML fundamentals through building, not reading&lt;/li&gt;
&lt;li&gt;CSS styling with AI assistance&lt;/li&gt;
&lt;li&gt;How to deploy a live website&lt;/li&gt;
&lt;li&gt;Git basics for version control&lt;/li&gt;
&lt;li&gt;Most importantly: I CAN actually do this!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Power of AI-Assisted Learning
&lt;/h2&gt;

&lt;p&gt;Traditional coding education tells you to master theory first, then build. But my ENTP brain works differently - I learn best through:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hands-on experimentation&lt;/strong&gt; - Start building immediately&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI pair programming&lt;/strong&gt; - Tools like Cursor and Claude explain concepts as I encounter them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern recognition&lt;/strong&gt; - Seeing how code structures connect across different projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immediate feedback loops&lt;/strong&gt; - Deploy early, iterate quickly&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;This is just the beginning of my journey. My roadmap has me building increasingly complex projects over the next 24 months, from simple web apps to full-stack applications.&lt;/p&gt;

&lt;p&gt;But more importantly, I've discovered that career change at 35 isn't just possible - it can be the perfect time when you finally understand how your brain actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Fellow Career Changers
&lt;/h2&gt;

&lt;p&gt;If you're considering a career change but traditional learning paths feel overwhelming or boring, consider this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Understand your personality first&lt;/strong&gt; - Use AI tools to get real insights about how you learn best&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embrace AI-assisted learning&lt;/strong&gt; - Don't let anyone shame you for using modern tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start building immediately&lt;/strong&gt; - Theory can come later&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work with your nature, not against it&lt;/strong&gt; - Your "quirks" might be your superpowers&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The future of learning is here, and it's personalized, AI-powered, and incredibly exciting.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was created with assistance from Claude Projects, which helped structure my thoughts and experiences into this narrative. This is my first dev.to post and the start of documenting my journey from zero to software developer. Follow along as I share the ups, downs, and everything I learn using AI-powered development tools!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's your experience with AI-assisted learning? Drop a comment below - I'd love to connect with fellow learners and career changers!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ai</category>
      <category>webdev</category>
      <category>career</category>
    </item>
  </channel>
</rss>
