lesscodex.dev
← Back to Blog
2024-10-03·5 min read

My Web Stack in 2024

The tools I use to ship websites, web apps, and digital products — and why I chose each one over the alternatives.

stacknextjstools

After a few years of trying different combinations, I've settled into a stack that lets me move fast without accumulating debt. This isn't a definitive 'best stack' — it's what works for the kind of projects I build: websites, dashboards, small-to-medium web apps, and creative experiences.

Next.js for almost everything

Next.js App Router is my default framework for any project that needs routing, data fetching, or server-side capabilities. The file-based routing is intuitive, the image optimization is built-in, and the deployment story on Vercel is seamless.

For purely static, content-first sites where I don't need React's reactivity, I'll reach for Astro. It produces smaller bundles and the component island model is genuinely useful for mostly-static sites with a few interactive bits.

TypeScript everywhere

I stopped writing vanilla JavaScript for anything non-trivial about two years ago. TypeScript catches entire categories of bugs before they happen, makes refactoring safer, and the autocomplete is worth the setup cost alone.

The type overhead people complain about is usually from over-engineering types. For most project work, you need maybe 20% of what TypeScript can do. Start simple, add complexity only where it earns its keep.

Tailwind CSS for styling

Tailwind's utility-first approach matches how I think about UI: small, composable pieces. I can build and iterate on UI faster with Tailwind than with any CSS-in-JS solution I've tried, and the output is smaller with PurgeCSS in production.

PostgreSQL for data that needs to last

When a project needs a database, I default to PostgreSQL via Prisma. The Prisma schema-first approach means I can reason about my data model before writing any queries, and the type generation makes database access feel like any other typed code.

What I'd change

No stack is perfect. I'd like to explore Bun as a runtime more seriously. The edge runtime story is still fragmented. And I keep meaning to learn more about database optimization beyond basic indexing. But for shipping real products to real users, this stack has been reliable.

HA

Hilal Abdillah

lesscodex.dev

Senior web developer building websites, web apps, and digital products. Writing about craft, process, and the things I figure out along the way.