My Stack in 2025

June 11, 2025

Here’s what I’ve been hacking with lately:

1. Frontend (React w/ Vite)

I know the entire hype on X these days is building monolith apps with Next.js, but I think it’s mostly just marketing BS from Vercel (no beef with them) pushing you to get locked into their ecosystem.

Let me explain. With a separate client and backend, you can deploy:

  • Frontends to a static host that’s cheap, fast, and global
  • Backends to a compute platform, and tune it to your workload

We use Next.js in prod at work. Scaling often becomes “scale the whole thing”, even if the bottleneck is only on one side.

Also, if you want a mobile app or multiple frontends, this structure avoids the inevitable rewrite later. Trust me, I’ve been there.

For routing and data fetching, I use Tanstack Router and Query respectively.

I’m not saying my use case fits yours. If you are building an app with SEO or even if Next.js is all you have experience with and want the fastest path to a working product, do what you gotta do.

2. Backend (Hono)

In a backend framework, I want a flexible web server with typesafe client calls, without buying into a heavy fullstack framework.

Hono is a web standards first framework that can run on any runtime I want it to. CF Workers, Bun, Deno, Lambda, you name it.

I use Hono RPC over tRPC/oRPC because it gives me type-safe client calls on top of a plain, portable HTTP API, without locking my backend into a heavy RPC framework or an OpenAPI first workflow.

3. Styling (Tailwind & shadcn/ui)

I think this is probably one of the lesser controversial choices here. I feel like this is a pretty obvious choice: works great with AI, helps you ship fast, and all your components are still composable.

4. Databases

I was always against using bloatware like Prisma, until Drizzle came along and magically solved 99% of my issues with ORMs.

I use PostgreSQL on AWS RDS, but I’m pretty indifferent to the MySQL vs Postgres vs whatever debate.

As long as it’s a relational, SQL database, the nuances aren’t something I worry too much about. Using Postgres over MySQL or vice versa won’t kill your company, but overthinking shit like this will distract you from far more consequential decisions.

I use Turbopuffer for my vector DB, S3 for object storage, Neo4j for my graph DB, and Amazon ElastiCache for Redis.

5. Miscellaneous