How It All Went Down. From 0 to Production
Yesterday I shipped to production. And I want to share what I think about vibecoding and building solo.
Not a demo. Not a side project that “runs on my machine.” A real product, with real users, real infrastructure, and real responsibility.
Seven months ago, I just wanted to track my 9 cats.
The Accidental Platform
It started with a simple problem: vaccinations, weight logs, vet notes - scattered across spreadsheets and Trello, chat messages, and my increasingly unreliable memory.
“I’ll build a small app for myself.”
That cursed sentence is a spell. It summons months of work.
What began as cat profiles became a pet health platform. Multi-pet households. Placement and rehoming workflows. Medical records with attachments. Real-time notifications. In-app messaging. Admin tools. E2E tests. CI/CD pipelines. Backup scripts. Two VPS infra.
The kind of project that, yesterday would have been a 3-5 person team working for a full year.
I did it solo.
The Vibecoding Reality
Let’s address it directly: less than 1% of this codebase was typed by human hands.
The rest was vibecoded.
Code generation is the easy part. The hard part is software. Code writing is now easy, software still isn’t.
I used 15+ different models over these months. Bounced between them constantly. And somewhere along the way, I started recognizing their personalities:
- One writes with supreme confidence about things that don’t exist
- Another is cautious and verbose — safe, but slow
- Another will refactor your entire codebase if you look away for a second
You learn to smell it. Which model wrote this. Why it’s subtly wrong. Where the hallucination hides.
And if you don’t take breaks, you start seeing patterns everywhere. I understand now why people talk about “AI psychosis.” The line between insight and delusion gets blurry at 2 AM when you’re debugging code that three different models touched.
My antidotes: tests, small commits, and walking away when my brain got weird.
The Timeline
Month 1 — Chaos
First commit: planning docs and tech stack debates. Laravel (chosen by a collaborator who then disappeared — best failed collaboration ever). React + Vite. Basic auth. Cat profiles. Everything breaking constantly.
Running fast in the dark. Bumping into walls. Learning that refactoring isn’t luxury - it’s oxygen.
Month 3 — It Stopped Being a Toy
Multi-pet support. Dogs joined the cats. Placement workflows appeared - not just buttons, but actual lifecycles with states and transitions. Email infrastructure. Docker pipelines.
Somewhere here, the project crossed an invisible line. It wasn’t a toy anymore. It was a product with responsibilities.
Month 5 — Systems, Not Features
Vaccination tracking became a proper system: active vs. completed, renewals instead of deletions, daily reminders, notification preferences. Health charts. Status badges. Performance optimization.
I started treating UX debt like real debt. Because it is.
Month 7 — Reliability, Not Features
The final month wasn’t about building new things. It was about making existing things unbreakable. [skepped endless list of refactors and improvements]
~1,500 meaningful unit tests. I’ve never had code this well-covered in my life.
What AI Actually Taught Me
The crane is powerful. But if you don’t understand structure, you’ll build a beautiful collapse.
What worked:
- Treating AI outputs as drafts, never truth
- Forcing everything through tests and types
- Asking for options, then making the call myself
- Using AI for scaffolding and repetitive patterns
- Keeping context tight and instructions clear
What I learned:
- You cant vibecode something you don’t understand
- The skill isn’t generating code - it’s debugging, simplifying, and shipping
- Speed without tests is just faster failure
- The models are shockingly capable when you give them good context
- Impostor syndrome doesn’t go away. but gets quieter.
The Stack (Boring on Purpose)
I’m not trying to impress anyone with microservices.
- Backend: Laravel API + PostgreSQL
- Frontend: React + Vite SPA
- Admin: Filament
- Real-time: Laravel Echo + Reverb
- Infra: Docker, two VPS (staging + production), CI/CD
The philosophy: keep it boring, automate everything. If a flow matters, it has tests. If a deployment is scary, it has scripts.
What’s Next
The launch isn’t a finish line. It’s an ownership transition.
Yesterday I was a builder. Today I’m an operator. I have a long-term vision of how to grow this app, and ptioritise next moves.
The Real Takeaway
I started with “I want to track 9 cats.”
I ended with a production platform, infrastructure I trust, and something I didn’t expect:
The realization that I can build things now. Real things. Solo.
A year ago, this would have been impossible alone. The barrier wasn’t skill - it was time. AI compressed that time. Not by writing perfect code, but by making iteration fast enough that I could learn, fail, and fix at a pace that actually works for one person.
This is the shift. Not “AI writes code for you.” But “AI makes building alone viable.”
We’re just getting started.
Built with: Laravel, React, PostgreSQL, Docker, ~15 different LLMs, 1,500 tests, countless cups of coffee, and 9 cats who still don’t care about software architecture.