My go-to tools for building software or hardware.
Here’s where I’m currently most productive:
1. Frontend
I started with Next.js. It’s popular and works well with Vercel (obviously). I tried Nuxt.js but building on top of Vue.js wasn’t really my thing.
I then discovered Remix and stuck with it for a while. It’s simple, scales well, and has a great mental model. Sadly, what’s ahead is uncertain.
But I was building client-side first apps. So Next.js, even though I loved it, wasn’t the best fit for me as I wasn’t using all the features it provides (RSC, SSR, PPR).
So as of today, depending on the use case, I use:
2. Styling
Building flexible, accessible components is hard. You either use (and extend) a component library, or build your own. This is why I use shadcn/ui.
It provides well-designed and extensible components, built on top of accessible, unstyled primitives like Base UI. This includes basics like buttons and inputs, but also icons, charts, and custom themes.
Components are styled with Tailwind CSS, the most AI-friendly CSS library. Why? This makes generating and editing code with AI tools much easier.
Tailwind uses a compiler to generate only the classes you use. While the framework contains many possible class names, only the ones you use get included in the compiled CSS file.
If you only write Tailwind code, your bundle will never be larger than the total set of used Tailwind classes. You’re extremely unlikely to use them all. This means you have a fixed upper bound on the CSS file size, which is then minified, compressed, and cached for the best performance.
3. Backend
I love how you type something and it just works. They have production-ready components like crons, workflows, and many others that are a pain to develop and maintain.
The best part? Queries are reactive, automatically cacheable, and everything is typed. This is heaven for a TypeScript maniac like myself.
4. AI
Cursor is my everyday code editor. I mostly use its autocomplete feature, which is always on point. MCP (Context7) keeps agents up-to-date with latest docs of any open-source project.
I recently started using OpenCode for large refactors. I had a Copilot subscription I wasn’t using since I left VSCode for Cursor.
For my terminal, I use Warp. It’s great for system-wide tasks like managing packages, manipulating files, and more.
AI tools aren’t perfect yet, but they save me a ton of time.
5. Hosting
I switched to Cloudflare from Vercel. My projects are all static, so I don’t need server-side rendering. Cloudflare’s free tier has no bandwidth limits, and their CDN covers more edge locations, so load times are solid for a global audience. The DX is good enough that I don’t miss Vercel.