The ten parts, one at a time
Your stack is a building.
People will ask what your “stack” is. They mean: what are the parts, and how do they fit together. Every diagram of it is boxes and arrows drawn by someone who already gets it. So here is the version that finally made it click: you are not writing software, you are putting up a building. It has a front door, hallways, floors, a food court, and a stockroom nobody sees.
Scroll to walk down through it ↓ · every floor is a button you can press
01
DNS the sign on the highway
Turns your name into an address, so browsers can find you. It is the one floor you rent instead of own.
What bites: Get one line of it wrong and the whole building disappears while every machine inside it is perfectly fine. Worse, the fix takes as long as your own settings said it should — the internet is still handing out the old answer.
02
CDN / Edge the nearest doors
Copies of your lobby kept close to every visitor, so the page opens fast no matter where they are.
What bites: Old copies. You shipped the fix, and the door nearest your visitor is still handing out yesterday's version. Clear the copies, then check from a machine that is not yours.
03
HTTPS / TLS the bag check
Proves the door really belongs to you, and seals everything said inside so nobody in between can read it.
What bites: A certificate made out to one name, put on a door with a different name. The browser calls it a mismatch. Your visitor calls it a scam warning and leaves.
04
Frontend the lobby and the map
Everything the visitor sees and touches. It runs on their machine, not yours.
What bites: Anything the browser can show, the visitor can read and change. Passwords, prices and rules that live only here are suggestions, not rules.
05
Auth the membership desk
Works out who is at the door. That is all this desk does, and the word for it is authentication.
What bites: The desk checks your ID. It does not decide which floors you may walk onto — that is a separate job, and it has to happen in every hallway. Mixing the two up is how you get login loops and doors left open.
06
API routes the hallways
Named paths from the lobby to the back rooms. Every request the app makes walks down one of them.
What bites: A hallway with no badge check of its own is an open door, no matter what the lobby did. Check at the top of every path, not once at the front.
07
Services the back rooms
Where the actual work happens: pricing, bookings, invoices. The rules of your business live here.
What bites: AI will happily put those rules in the lobby instead, where anyone can see them. A rule that exists in two places slowly stops matching itself, and nobody notices until the two disagree in front of a customer.
08
Third-party the food court
Other people's businesses, leased space inside your building: payments, email, maps.
What bites: When they go down it looks like you went down. Messages they send you are not really from them unless you check. And one of their keys, leaked once, runs up your bill.
09
Background jobs the loading dock
Work that happens away from the customer: sending, exporting, retrying, cleaning up.
What bites: Jobs that fail quietly. If nothing counts the failures and tries again, the dock fills up and nobody out front has any idea.
10
Database the stockroom
Everything you actually own, in one place, behind one door.
What bites: The lock has to be in the elevator, not on a sign in the lobby — the database itself has to refuse, not the code around it. And a backup you have never actually restored is a hope, not a backup.
The part that bites people
One customer must never see another customer’s stuff
Say two companies both use your app. Each one rents its own floor. A badge for floor 3 should open floor 3 and nothing else. Here is the bit worth burning into your head: the sign in the lobby is not what stops anybody. A sign is a polite request. The elevator refusing the badge is what stops them.
In your app, the sign is the code you wrote — the line that says “only show this customer their own rows.” The elevator is the database itself. If the only thing keeping people apart is that one line, then one forgotten line, or one person editing the web address in their browser, and somebody is standing in a stranger’s stockroom reading their files.
Put the lock in the elevator.
Make the database refuse, not just your code. That is the whole idea, and it is the most expensive thing people learn the hard way. The Security Boundary prompt makes an AI tool build it that way, and the Vibe Check will not pass a build without it.
Own your data
Know where your database lives and whose account it is in. Some app builders host it for you. For example, Supabase’s own docs say a Lovable Cloud database is not in your Supabase account, does not show on your Supabase dashboard, and cannot be switched to your own Supabase account later; you have to move the data yourself (Supabase docs).
Export your data on a schedule, keep the export somewhere you control, and try restoring it once.