20
The Right Way to Build a Web App in 2021
When I left my infrastructure engineering job at Google to start my own company, I had a hard time getting my bearings in the world of product engineering. The last time I'd really touched Javascript was in college in 2013, when JQuery was still a thing, and I quickly realized that frontend development had changed A LOT since then. There was seemingly a new hot managed database or managed auth thing every month or so, and it was easy to get distracted.
This is the guide I wish I had a year ago — tl;dr explanations of the different components available for a modern web stack with my recommendations for which ones to use in combination with each other. I'm not saying that these are going to be your forever stacks, or totally optimal ones. But for going from 0 to 1, from conception to a presentable web app, I think these are the best options. Things I'm considering include completeness of documentation, amount of support you can get on forums, integrations with each other, generally "looking good", and cost. Under each heading, if I have a recommendation, I label it with a green check mark.
If you're just looking to put up a personal website or something else fairly static, I would highly recommend:
Javascript ✅
Typescript
TailwindCSS is a CSS framework that provides you with predefined utility classes. Instead of importing a stylesheet that has overridden certain html elements like with Bootstrap, Tailwind gives you finer grained control with tags like "red" or "lg" that you can concatenate. So for example, html for a big red button would look something like this:
<div class="red lg">Submit</div>
- the makers of TailwindCSS recently put out a paid component library with pre-styled components for dashboards, pricing pages, etc. It's $249 for lifetime access and worth it IMO.
Python/FastAPI
Postgres ✅
UI Framework: Bootstrap
Frontend: Create-React-App
Backend: FastAPI
Auth/DB: Firebase
Deployment: Render
UI Framework: Bootstrap
Frontend: Create-React-App
Backend: Express
Auth/DB: Firebase
Deployment: Render
UI Framework: Tailwind
Frontend: Next.js
Backend: Next.js
Auth/DB: Supabase
Deployment: Vercel
From these "template" combos above you can also mix and match stuff, like swapping in Tailwind for Bootstrap, Supabase for Firebase, etc.