What I Learned Building Full-Stack — And Why Your Stack Will Look Nothing Like Mine
What my first real full-stack project taught me about choosing tools you believe in, and why your stack will never look exactly like someone else's.
7 min read

What I Learned Building Full-Stack — And Why Your Stack Will Look Nothing Like Mine
I went into my first full-stack project thinking I knew what I was signing up for. Frontend on one side, backend on the other, done. What I actually built — a finance tracking app — taught me that full-stack isn't two layers. It's twelve. And the journey of choosing, learning, and wiring them all together taught me something more important than any single tool: every developer's stack is personal.
The stack I chose
For my finance tracker, I landed on tools I felt comfortable enough to move fast with, but stretching enough to actually teach me something:
Language: TypeScript — Type safety saved me more times than I can count
Framework: Next.js — Full-stack in one repo, routing included
Database: Supabase — Postgres, auth, and storage all in one place
Hosting: Vercel — Push to Git, live in seconds
Version control: Git — The thread that ties everything together
The thread that ties everything together
This combination felt right for me — TypeScript and JavaScript were languages I already knew, Next.js handled both my frontend and API routes so I wasn't juggling separate repos, Supabase removed the pain of setting up auth and a database from scratch, and Vercel made deployment feel almost too easy. That last part is important: I didn't pick these tools because they're the best tools. I picked them because I could move.
What building it actually revealed
Once the finance tracker was live and real users were hitting it, the layers I didn't plan for started revealing themselves one by one:
Security & RLS — Supabase's Row Level Security meant I had to actually think about who could read whose financial data. I hadn't thought about that until a bug scared me into it.
Rate limiting — A finance app hitting an API with no throttle is a liability. I learned this by nearly running up a bill.
Caching & CDN — Vercel handles a lot of this automatically, but understanding why pages felt fast taught me what caching is actually doing.
Error tracking & logs — Once it's live, you're blind without observability. Shipping is when the real debugging starts.
Availability & recovery — What happens to user data if something goes wrong? I hadn't thought about backups until I thought about backups.
None of these came up in tutorials. They all came up when something broke, or when I almost broke something, or when I started thinking seriously about real users trusting my app with their money data.
Your stack won't look like mine — and that's the point
Picking a tech stack is one of the most personal decisions in development, and I mean that genuinely. Another developer building the same finance tracker might reach for Django and Postgres on Railway, or Firebase with Flutter, or SvelteKit on Cloudflare Workers. None of those are wrong. They reflect what that developer knows, what they're comfortable with, and what they want to learn next. The best stack is the one you can actually ship with — not the one that wins arguments on Twitter.
What matters far more than which tools you choose is that you actually understand why you're choosing them. I chose TypeScript because I wanted the safety net while I was still learning. I chose Supabase because I didn't want to spend three days setting up auth before I'd written a single feature. Those weren't arbitrary calls — they were decisions based on where I was as a developer at that moment in time.
Pick what engages you, not what impresses people
The most underrated advice in development is this: build with tools that keep you curious. If a framework excites you enough to spend a weekend learning it, that enthusiasm carries the project further than any benchmark comparison ever could. I was genuinely excited about Next.js server components. That excitement meant I pushed through the hard parts instead of abandoning the project at layer three.
No two developers are alike. Your background, your goals, the type of apps you want to build, the community you've found yourself in — all of it shapes what tools feel natural to you. Own that. A junior developer who deeply understands five tools they chose intentionally will always outperform one who half-knows fifteen tools they chose because a YouTube video told them to.
Build something real
If you take one thing from this: skip the tutorial loops and build something with actual stakes. A finance tracker, a habit app, a tool you personally need. Pick the stack you're most comfortable with right now, ship it somewhere real, and watch the other twelve layers of full-stack introduce themselves. That's when the learning stops being theoretical — and starts being yours.
