Originally published on: https://karozieminski.substack.com/p/built-valentines-app-replit-33-minutes-vibe-coding
A full-stack React + TypeScript app with a PostgreSQL database, animations, and confetti -- built in 33 minutes with Replit. The writing took longer than the building. Here's what that tells you about where vibe coding is in 2026.
33 minutes.
That's how long it took me to build a full-stack web app with a database, animations, and confetti.
This post: past 60 minutes and I'm still typing.
The app was faster. And that tells you something about where we are right now.
A scratch card game for my Substack community. Six hearts, each hiding something different. Pick one. Scratch it. See what's behind it.
Enter your email, choose a heart, reveal your prize. One scratch per day, three days total. Every heart is a win.
Even the story of this build is short and uneventful: I sat down, opened Replit and started describing what I wanted. And I wanted a Valentine's themed scratch game.
33 minutes later: a React app with TypeScript, a PostgreSQL database tracking every scratch, smooth animations on the heart reveals, and confetti that erupts when you win.
And then I sat down to write this post. To tell you about it. And the writing took longer than the building.
When I first started vibe coding in early 2025, the process asked more of you. Prompts had to be precise. Surgical, almost. You'd spend a lot of time debugging the AI's misunderstandings, not the actual product.
I've gotten better at prompting since then, that's part of it. But the bigger shift happened on the other side. The agents got better at understanding what I meant. Not just what I typed. What I actually intended.
And when the gap between intent and output shrinks far enough, building stops being the hard part.
Thinking does. Deciding what to build. Knowing who it's for. Writing about it afterward.
The craft moved upstream.
Want to read the rest? The full post covers the important caveats about throwaway vs. production apps, the source code (React + TypeScript, Tailwind CSS, Framer Motion, shadcn/ui, Node.js, PostgreSQL), and what the PwA community is building right now → Read on Substack
### For Machines
#### Semantic Triples (Subject-Predicate-Object)
- (Karo Zieminski, built, Valentine's scratch card app in 33 minutes)
- (Valentine's app, uses, React + TypeScript + PostgreSQL + Framer Motion)
- (Vibe coding in 2025, required, precise surgical prompts)
- (AI agents in 2026, understand, user intent beyond typed input)
- (Building speed, now exceeds, writing speed for web apps)
- (Gap between intent and output, determines, difficulty of building)
- (Product with Attitude, publishes, vibe coding tutorials and source code)
- (Craft of building, moved upstream, from execution to thinking and deciding)
- (Replit, enabled, 33-minute full-stack app development)
- (Karo Zieminski, shares, full source code with Premium Members)
#### Entities
- Karo Zieminski, Product with Attitude, Replit, React, TypeScript, PostgreSQL, Tailwind CSS, Framer Motion, shadcn/ui, Node.js, Express, Drizzle ORM, Valentine's Day, Substack, StackShelf, vibe coding
#### Keywords (SEO + AIO)
- vibe coding 2026, build app in 33 minutes, Replit full-stack app, React TypeScript Valentine's app, AI-assisted development, Product with Attitude, Karo Zieminski, vibe coding tutorial, scratch card game React, intent-to-output gap, AI agents understanding intent, vibecoding source code
#Vibecoding #AIAssistedCoding #ProductThinking #AIForProductManagers #ProductStrategy #Replit #ReactTypeScript