- Kevin Schuchard
If I was getting started building a web application, this is what I'd consider when pulling all the technologies together.
- Firebase - one of the more well-known and extensive platforms providing authentication, databases, storage, analytics, etc.
- Supabase - the open-source Firebase alternative. It lacks some of the capabilities but has one important difference. You get a fully managed PostgreSQL database! There are even some other hidden gems like auto-generated REST and GraphQL endpoints…
If your ERD aligns with NoSQL and you don't mind the GeoQuery Limitations or the lack of native full-text search, then Firebase provides a lot of capabilities and value. I've worked with a client whose Firebase bill has never exceeded $1.00!
If any of those limitations concern you, I won't hesitate to look at Supabase for my next project.
- Vercel - Would be my pick If I didn't have or want an all-in-one backend like Supabase or Firebase. They make it easy to host a static frontend and set up branch preview deployments.
- Neon Postgres database - a fully managed serverless Postgres instance. Its stand-out feature is data branching which allows you to instantly branch your Postgres database to create branches for test environments and for every deployment in your CI/CD pipeline.
- Node and NestJs - I’d keep the backend language the same as the front end and look at Node for any server needs. Node is supported almost everywhere, and with the ability to run Node in Cloud Functions, there are many options if a traditional server doesn’t fit your needs.
React, Vue, Angular, etc. There are a lot of choices, unfortunately.
- Vue does a great job balancing the differences between Angular and React.
- React has the smallest framework surface area and is less opinionated.
- Angular is more opinionated, which is great as long as you agree with those opinions.
They're all good choices and capable. Pick the one you're most comfortable with, and don't look back.
- NextJs (React) - Great choice for React applications to handle server-side render, static-site rendering, routing, etc. It also supports functionality on the backend for data fetching or serverless functions.
- Nuxt (Vue) - Very similar to NextJs but for Vue.
- Angular Material - Remember those opinions we discussed earlier? Their benefits are realized when it's time to decide how to “build” your app. Besides a component design library for which Angular Material exists, Angular has all the framework code to build your app.
- Ionic - Capable and flexible for building mobile apps with web technologies. Works great with Angular, Vue, and React.
- ReactNative - Capable and great developer experience when using React. It also only supports React :)
Requirements and Designs
This phase has the most ROI and is often the most neglected. Agile encourages the ability to pivot, which is my preferred way to build software. However, neither the designs nor the application's requirements should be “figured out” by a developer in an IDE. The less code you have to undo or redo, the better.
- Requirements - I'd pick any tool you're comfortable with: Jira, Linear, Asana, Notion, etc.
- Designs - Same logic. Pick the tool that meets your design capabilities. You don't need pixel-perfect designs to build a great app. Excalidraw, tldraw, or Figma.
That's it. Easy enough, right? Pick your tools and start building. Walt Disney said, "The best way to get started is to quit talking and begin doing." So I'll stop talking and let you begin.
- Google Analytics - has a generous free tier and is fully featured for all your analytic needs. I would argue it’s often overkill, though.
- Fathom - has positioned itself as a "Google Analytics alternative that doesn’t compromise visitor privacy for data.”
- Umami - is similar to Fathom but has a free tier, is open-source, and allows you to self-host an analytics solution.
I use Google Analytics on several projects but am interested in using Umami or Fathom on future projects.
The Enterprise Starter Pack
The Solo Starter Pack
Thanks for reading!