If I’m building a new web app in 2024, I would use:
- React (Typescript) + NextJS on the frontend. I simultaneously like and dislike Next. There’s a lot of magic and odd API choices, but it seems like the best option right now. Using app router helps remove the need to create API endpoints for everything, which helps.
- NodeJS (Typescript) on the backend. It’s convenient to stay in the same language, and has some benefits for monorepos / code sharing. Python is probably fine too, but I find Flask to be too lightweight (and I find the ecosystem to be rough). It might be a good idea if you’re doing ML.
- Prisma for ORM. It’s the nicest ORM I’ve used; I like it even better than ActiveRecord. The type safety you get with it and Typescript is amazing. I like how they do migrations, too.
- Postgres for database. Not too much to mention here.
- Tailwind or Chakra for CSS framework. I use both and each have their advantages. I think Tailwind is more composable (it’s just classes), but you need to build more of your own stuff. Chakra builds a lot of the dynamic components for you, but I miss the composability of “just classes” sometimes.
- Render for app hosting + infra. Vercel’s pricing model is a trap, and you can’t run worker services or databases. AWS is good if you know it, but Render was way faster to build on for me. You can do (their version of) IaC, and run pretty much everything you need—Redis, Postgres, servers, workers—affordably. You can spend $40 for a low scale app per month.
- Use a monorepo. I’m not an expert on monorepos, but pnpm works for Node/React projects. Having everything in one repo makes things so much easier, though—you get atomic commits, easier deployment, code search.
- Github workflows for CI/CD. Not too much to mention here.
- Auth - no opinion. I’ve used Auth0 a bunch, and it’s always a bit of a pain. I’ve heard there are better alternatives; curious if people have recommendations here.