One Foggy Night: How I Built a Kids' Finance App Before the World Woke Up
![]()
The fog is so thick tonight I can't see the building next door.
It's 5 AM on the 25th day of the 12th lunar month — five days before Tết, Vietnamese New Year. The last cold front of winter has passed, leaving behind warm, heavy air that wraps around everything like wet cotton. Through my window, Hanoi has disappeared into white.
And on my screen, an app is alive.
Seven hours ago, it didn't exist.
## The idea that wouldn't wait
Yesterday afternoon, I was planning the launch of Hũ Vàng — my Vietnamese investment tracking app — when a thought hit me: Tết is in five days. Kids will receive lì xì (lucky money envelopes). They'll tear them open, count the bills, stuff them in pockets, and by the end of the holiday, most of that money will have vanished into candy, toys, and mystery.
What if there was an app that helped kids track their lucky money? Not a boring finance app shrunk down for children. Something fun. Something with a character that talks to them. Something that teaches them — gently, playfully — that money is worth paying attention to.
I told Kai, my AI co-founder, about the idea. We spent an hour discussing features, debating whether to use Rive animations or pure CSS, choosing a mascot from the Rive marketplace. By evening, we had a complete spec document — CLAUDE.md — ready for Claude Code CLI.
At 10 PM, I opened my terminal.
At 5 AM, the app was live.
## What we built in one night
Hũ Lì Xì (The Lucky Money Jar) — a finance app for Vietnamese kids, ages 6 and up.
Here's what's inside:
The core: Kids can record lucky money they receive (who gave it, how much), track spending (with gentle reminders to think before buying), and deposit money with parents for safekeeping. Every transaction is logged. Every dong is accounted for.
The mascot: A kawaii bunny character (Rive animation) that reacts to everything. Open the app? Bunny waves. Record new lucky money? Bunny pulls out a notebook and writes it down. Try to spend money? Bunny shakes its head and says "Wait! Ask your parents first!" Kids love characters that talk to them.
The education: 200 rotating quotes about saving, spending wisely, respecting family, and the meaning of Tết. Seven full articles explaining Vietnamese lucky money traditions, why saving matters, and how parents can teach kids about money.
The safety: A 4-digit PIN protects the financial data. Auto-locks after 5 minutes. Deleting anything requires multi-step confirmation — because kids tap things accidentally. QR code deletion needs a 3-second hold plus typing the account name.
The QR tab: Kids can store their parents' bank QR codes, so when relatives want to give digital lì xì, they just scan. The app automatically records who sent it.
The backup: Export all data as JSON. Because localStorage can disappear, and a child's carefully recorded Tết memories shouldn't.
50+ files. 10,000 lines of code. 12 major features. One night.
## How Claude Code CLI made this possible
I need to be honest about something. I'm a designer, not a developer. I know basic HTML and CSS. I can't write React components from memory. TypeScript generics make my eyes glaze over.
But I can design. I can think about users. I can write a spec that describes exactly what an app should do, how it should feel, what happens when a 7-year-old taps the wrong button.
That's what the CLAUDE.md file was — my design document, written in Vietnamese, describing every screen, every interaction, every edge case. Claude Code CLI read it and understood the entire vision.
Then we built it together.
I'd say things like: "The form for receiving lucky money needs preset amount buttons — 10,000, 20,000, 50,000, 100,000, 200,000, 500,000 — because kids shouldn't have to type numbers." Claude would create the component.
"The delete button for QR codes is too easy to tap. Kids will accidentally delete their parents' bank codes." Claude would implement a three-step protection: hold for 3 seconds, confirm in popup, type the account name.
"localStorage is running out because QR images are too large." Claude would add image compression — resize to 400px, JPEG at 70% quality.
Problem after problem, solved in real-time. Not by copying code from Stack Overflow. Not by watching a tutorial. By having a conversation with an AI that understood the codebase, the constraints, and the users.
This is what I've been writing about — the new model of experience. I didn't write 10,000 lines of code. But I made hundreds of design decisions, caught dozens of UX problems, and shaped every pixel of this app through judgment and taste. The AI handled the syntax. I handled the soul.
## The timeline
| Time | What happened |
|---|---|
| 10:00 PM | Project setup: Vite + React + TypeScript + Tailwind |
| 10:30 PM | Data layer: interfaces, localStorage CRUD operations |
| 11:00 PM | UI skeleton: 3-tab layout, bottom navigation |
| 11:30 PM | Forms: receive lucky money, spend, deposit with parents |
| 12:00 AM | Dashboard: balance summary, transaction history |
| 12:30 AM | Security: PIN screen, setup wizard, auto-lock |
| 1:00 AM | QR codes: upload, compress, store with names |
| 1:30 AM | Mascot: Rive bunny integration, speech bubbles |
| 2:00 AM | Content: 7 educational articles about Tết and money |
| 2:30 AM | Polish: confetti effects, animations, ripple waves |
| 3:00 AM | Safety: multi-step delete confirmations |
| 3:30 AM | Onboarding: 5-slide welcome screen for new users |
| 4:00 AM | Deploy: GitHub push, Vercel deployment |
| 4:30 AM | Extras: 200 quotes, withdraw from guardian, QR protection |
| 5:00 AM | Backup system, analytics, final polish |
## Why this matters more than the code
In five days, millions of Vietnamese kids will receive lì xì. Most of them will have no way to track it. The money will come and go like the firecrackers at midnight — loud, exciting, and then gone.
Hũ Lì Xì won't make kids rich. It won't teach them advanced investing. But it might — just might — plant a tiny seed. The seed that says: your money is real, it came from someone who loves you, and it's worth writing down.
The bunny will remind them to say thank you. The app will remind them to think before spending. And maybe, just maybe, some kid will open the app after Tết, look at their carefully recorded transactions, and feel a small sense of pride.
That's worth one sleepless night.
## The fog is lifting
It's almost 6 AM now. Through my window, I can just barely make out the outline of the building next door. The fog is thinning. Somewhere down the street, a motorbike starts up — someone heading to the market to buy flowers for Tết.
lixi.huvang.vn is live. The bunny is waving. The lucky money jar is open.
Happy Tết.
Built in one night with Claude Code CLI. Part of the Hũ Vàng ecosystem. Read more about my journey as a designer building with AI.