The most expensive mistake on a young project is not the wrong feature. It's the wrong infrastructure. I have watched solo founders pick Kubernetes because they read a blog post and burn three months on devops they did not need. I have watched teams pick a managed BaaS because it was easy and hit a wall the day they wanted to do anything off-pattern.
My default stack for a new product: Next.js on Vercel, Postgres (Neon, or Supabase if I want auth out of the box), and an auth provider I can rip out, meaning Clerk or Auth.js. That is it. It scales further than most projects ever go, the deployment story is one command, and I can run the whole thing locally without three Docker containers.
I deviate from that default for three reasons, and only three. Real-time at scale, meaning websockets, gaming, or collaboration, is when I bring in something like Liveblocks or self-host. Heavy compute, meaning ML, video, or geospatial, is when I add a worker layer, often Modal or a Vercel Background Function. Regulatory, meaning HIPAA or PCI, is when the cheap path is buying compliance via something like Vanta and using a vetted cloud.
The five questions I make every founder answer before we ship a stack decision: (1) What's the actual user load in 6 months, honestly? (2) What's the cost ceiling? (3) Who maintains this in two years? (4) What needs to be portable if we change our minds? (5) What does failure look like, and how fast can we recover?
Most founders cannot answer (1) accurately and overshoot. Most engineers cannot accept (2) and over-engineer. The honest version of those answers points at a stack that is smaller, cheaper, and easier to debug than what most teams ship. I default to boring tech until evidence forces me off it.
One more rule: never pick infrastructure during a deadline. The pressure makes you choose the thing that feels safe today, and that thing is rarely the cheapest tomorrow.