I wasted years arguing with myself about tooling. npm versus yarn. Then pnpm. No node_modules. Microservices. Kubernetes.
I finally stopped optimizing for "correctness" and started optimizing for momentum.
This is the stack that made that possible.
The Stack
- Runtime: Bun
- Framework: React Router v7 (Framework Mode)
- Database: PostgreSQL + Prisma
- Infrastructure: Fly.io + Docker
- Styling: Tailwind CSS + shadcn/ui
- Validation: Zod + Conform
- Auth: Cookie-based sessions
This is a solo founder stack. The goal is simple. Ship before you get bored.
Why Bun
I used npm forever. It worked. Slowly.
Then I tried Bun and it was just boom. Fast. Instantly noticeable. bun install finishes before I context switch. bun run dev starts immediately.
Is it perfect? No. Does it have edge cases? Yes. But for a solo founder, the raw speed pays for the occasional compatibility headache. I want files on disk. I want boring. Bun gives me speed without making me learn a philosophy.
Why React Router v7
React Router v7 is Remix on steroids.
I used Remix through the Epic Stack. Everything included. Auth. Forms. Loaders. Actions. SSR out of the box. It clicked immediately.
SSR works without ceremony. Forms work without JavaScript. The app behaves like the web first and a JavaScript app second.
This is the first React setup where I stop thinking about architecture and just follow the request lifecycle.
Why Fly.io and Docker
A stack isn't real until it has a URL. I don't use AWS. I don't use Kubernetes.
I wrap this entire stack in a Docker container and push it to Fly.io.
Why? Because Dockerfile is the ultimate truth. If it runs in the container, it runs on the server. No proprietary cloud functions to debug. No "works on my machine" drama. Just a linux box somewhere close to my users.
Why Tailwind and shadcn
Tailwind is the default. I genuinely do not understand how people choose anything else at this point.
shadcn is the missing piece. It is not a library. It is ownership.
bunx --bun shadcn@latest add buttonNow you have a button. Styled. Accessible. Editable. Yours. No wrappers. No waiting for maintainers.
The Corporate vs. Founder Mindset
If I proposed this stack at a Big Tech company, I would be laughed out of the room.
Corporate stacks are built for Scale and Teams. They manage complexity by adding layers.
My stack is built for Velocity and Autonomy. It removes layers.
I want tools that behave like hammers. When you need to put in a nail, nothing beats a hammer that just works.
What Changed
Once I settled on this stack, I stopped worrying about frameworks.
I stopped reading "best stack 2025" threads. I stopped rewriting projects. I stopped second-guessing.
Shipping means something exists. I can post it. I can see it later. I can build on it or walk away knowing it is real.
Doing beats thinking. Every time.
The best stack is the one you stop thinking about.