In the past few weeks, I've begun building a new product. I'll share more about it in the coming months, but for now I thought it would perhaps be interesting to others to share the stack that I'm currently building with - I've always found it interesting to read what others are using.
I'm building the front-end with Next.js - I've found the early stages of just getting set up with Next.js much easier than using barebones React (for those who don't know, Next.js is built on top of React). I'm building and deploying it on Vercel, which so far has been a really good experience.
What I'm building requires high reliability, so I'm writing some end-to-end tests, written in Playwright.
Database + Back-End
When I started building Stairway, we used Google Datastore. There were several advantages to this, but we did find that the benefits of NoSQL (and Datastore in particular) did not meet the downsides.
I've decided to use Supabase, which bills itself as an open source Firebase alternative. It is a managed Postgres database, with additional functionality provided on top (such as an autogenerated API and realtime functionality), out of the box. I'd consider this the 'riskiest' decision out of the choices I've gone with, just because it's much younger as a company. That said, the experience so far has been very good, and I'm looking forward to putting my application through load testing before launch to make sure it's capable of handling the required scale.
I'm taking more of a serverless approach to the back-end, compared to the Python back-end for Stairway. I haven't yet decided whether to use Edge Functions on Vercel, Supabase or something else entirely.
One thing that is surprising to me is how much better the options are compared to just a few years ago when deciding on the initial tech stack for Stairway. I've been able to develop a fully featured web application in a matter of days, rather than weeks or months previously. I would expect to see this trickle down with much smaller teams reaching scale over the coming 5 years. Zach Tratar wrote a great thread on this topic: