What I work with.

A snapshot of the tools and technologies I use day-to-day. Not every item is equally fresh — some I live in, others I’ll happily pick up again when a project calls for them.

Frontend

  • HTML, CSS, JavaScript

    The foundation. Everything else I use is built on top of this.

  • React & Next.js

    My default way to ship a product. Fast to build with, and the ecosystem means there’s a well-worn path for almost anything I need.

  • TypeScript

    I like knowing what shape my data is before it breaks. Strict mode on, every project.

  • Tailwind CSS

    Styling I can maintain six months later without scrolling through a sea of class names I invented once and forgot.

Backend

  • Node.js

    Runtime for almost everything I build server-side these days.

  • Hono

    Lightweight web framework for Node. Great fit when I want a dedicated API service rather than stuffing it into Next.js.

  • Next.js API routes

    The path of least resistance when the backend lives next to the frontend.

  • Java & Spring Boot

    What I spent five years building enterprise APIs with. Still useful context, even if I’m not reaching for it day-to-day now.

Data & databases

  • Drizzle & Prisma

    The two ORMs I alternate between depending on the project. Both play well with TypeScript.

  • SQL

    Underneath the ORM, it’s still SQL. Happy to drop down when the abstraction starts getting in the way.

  • Zod

    Validation at every integration point. If data crosses a boundary, it gets a Zod schema before anything downstream touches it.

  • JSON

    The default wire format between clients and servers. Unglamorous but essential.

Infrastructure & DevOps

  • Vercel

    Where most of my apps live. Deploys are fast and I don’t have to think about servers.

  • TurboRepo

    For keeping multi-package projects sane. Builds and task running that scale with the codebase.

  • Git

    Version control and branching. The boring essential.

Third-party services

  • BetterAuth & Clerk

    Auth is a solved problem now — I use whichever fits the project. BetterAuth when I want self-hosted control, Clerk when I want to be done by lunch.

  • Stripe

    Payments. Nothing else comes close for indie-scale projects.

  • Resend

    Transactional email that just works, with an API I actually enjoy using.

AI tooling

  • Claude Code

    Runs in my terminal and handles scaffolding and refactors, plus the long tail of boring edits across files.

  • Cursor

    My editor. The AI context integration is what keeps me there instead of plain VS Code.

  • Model selection

    I’ll bounce between Claude, Gemini, and OpenAI models depending on the task. Different models are good at different things, and it pays to know which is which.