• Skills
  • Projects
  • Changelog
  • Toolkit
SkillsProjectsChangelogToolkit

© 2026 Rahul Ragi.

How I think about building software.

I like knowing how the layers work. What runs in the browser, what runs on the server, how data moves between them. Tools change, but that part stays the same.

Frontend

Code that runs in the browser. HTML for structure, CSS for styles, JavaScript for interactivity. I use React and Next.js because they're fast to build with and the ecosystem is huge. TypeScript because I like knowing what shape my data is before it breaks something. Tailwind because I don't want to name CSS classes.

Backend

Code that runs on a server. When a request comes in, figure out what the client needs, validate the payload, talk to the database, return something useful. I used to write this in Java with Spring Boot. Now I use Node.js with Hono or Next.js API routes. Same ideas, different syntax.

Data

Where things get stored. Databases hold the information that persists between requests. I use Drizzle or Prisma to talk to them without writing raw SQL everywhere. Zod to validate data at the edges. JSON to move data between client and server. The goal is type safety from the database to the UI.

Infrastructure

Where the code actually runs. Vercel for hosting because deploys are fast and I don't have to think about servers. TurboRepo for monorepos when I have multiple apps sharing code. Git for version control. The boring stuff that just needs to work.

Third-party services

Things I plug in instead of building from scratch. BetterAuth or Clerk for authentication. Stripe for payments. Resend for email. These are solved problems. I'd rather integrate them in a day than spend weeks reinventing them.

AI tooling

How I work now. Claude Code in the terminal for scaffolding and refactoring. Cursor for writing code with context. I throw problems at multiple models and compare what they say. The models are tools. I still need to know if what they output actually makes sense.