A quick overview of my current stack for building and shipping quickly as a solo developer.
Every January people ask me what stack I would use for a new side project. The honest answer is "the one I already know," but that is not very helpful. So here is the actual list, with the reasons.
Frontend
Next.js with the App Router. I have shipped enough Next.js apps that the rough edges are familiar and the wins (server components, streaming, file based routing) compound. The App Router still has surprises, but I would rather know its surprises than learn a new framework's.
Tailwind CSS. I wrote a longer note on why I still use Tailwind, but the short version is that the constraints save me time and the output stays maintainable.
shadcn/ui. Not a library, more a set of patterns you can copy in. I like that I own the components after I add them.
TypeScript. Always. The cost is upfront, the savings are everywhere else.
Backend and database
Postgres on Supabase or Neon. Both are fine. Supabase if I want auth, storage, and the dashboard out of the box. Neon if I just want a clean Postgres with branching for previews.
Drizzle ORM. Lightweight, type safe, and stays out of the way. I used Prisma for years and respect it, but Drizzle's mental model fits how I actually write SQL.
tRPC when the frontend and backend live in the same repo. REST or simple route handlers when they do not.
Auth, payments, email
- Clerk when I want auth done in an hour and never thought about again.
- Auth.js (NextAuth) when I want more control or fewer external dependencies.
- Stripe for payments. Nothing else is close in developer experience.
- Resend for transactional email. Postmark and Loops are fine alternatives.
Hosting and infra
Vercel for the frontend. Yes, it is opinionated, and yes, the vendor lock in is real. For a solo project the time saved is worth it. If costs become a problem at scale, that is a great problem to have and I can move.
Cloudflare R2 or AWS S3 for object storage. Upstash Redis when I need a queue or rate limiter without managing a server.
Fly.io or Railway when a long running process is unavoidable. Both let me deploy a Dockerfile and forget about the box.
Observability
Axiom or Logtail for logs. Sentry for error tracking. PostHog for product analytics and feature flags. PostHog also handles session replay, which is invaluable when a user reports a problem you cannot reproduce.
AI services
OpenAI and Anthropic through their official SDKs. I switch between them based on the task. Vercel AI SDK as a thin abstraction when I want to swap providers easily.
For embeddings and vector search I lean on pgvector inside the same Postgres I am already running. Specialized vector databases are great at scale, but at indie scale Postgres is plenty.
Tools I use every day
- Cursor for writing code. See my comparison with Copilot for the longer take.
- Linear for tracking work. Even solo projects benefit from a simple board.
- Raycast for everything else.
What is not in my stack
- Microservices. One Next.js app and one Postgres database is plenty for almost any product before product market fit.
- Kubernetes. If you do not need it, you really do not need it.
- A custom design system. Use shadcn/ui or a similar starter and customize from there.
The point of this stack is not that it is the best. It is that it is boring in all the right places, so I can spend my novelty budget on the actual product. If you want to discuss your own stack, I am happy to chat.
References
Tagged
Sri Vardhan
Independent technology studio of one. I help founders and small teams ship serious software without the consultancy overhead. More about me.