Table of contents
Get on with the build-out already!
Once you have reached the hypothesis testing stage and you are ready to build your MVP you'll need to move super fast and avoid recreating the wheel unless there is a competitive reason to do so.
I've tirelessly evaluated off-the-shelf offerings for a variety of different use cases in the past six months pursuing my startup endeavor. I'll do my best to save you time and help you direct your attention to what matters. Many of these are platforms you probably know, and many you may not.
1. Every customer-facing application needs Authentication
I've seen young engineering teams waste a ton of time building their own fine-grained authentication tools. Move on, this is an easy first choice. Find yourself a high quality integration partner to manage your authentication. I have experience with many of the leading providers and evaluated a few new ones.
Stytch really kicks a ton of ass, but where they truly win is in support. They welcome you to their Slack, communicate with you openly on Twitter, and have tons of easy to follow examples in most frontend programming languages like React, NextJS, Vue, and plenty of others. I especially liked that they are focusing on Web3 authentication mechanisms while they ensure they support traditional User/Pass flows as well. Not to mention they'll give you $10k worth of startup credit to help ensure you can afford to focus on building and establishing your users before you have to worry about paying your first bill.
It's worth noting that this product seems like it would scale with your business, as it allows you to heavily customize any customer-facing aspect of communication (like forgot password and magic link templates). This is a problem with some other providers and has become a real thorn in my side in prior projects when product owners want this customizable capability.
I have a special place in my heart for Firebase as they provide such a great set of tools for other use cases. I tend to just default to this platform but I forced myself to try a few new things this go-round. The huge benefits of Firebase are the add-ons if you aren't super strong technically with Restful setup or GraphQL backend development. Firebase has a RealtimeDB offering that lets you setup a Websocket-like push interface instead of Request/Response. Their Auth framework wires into it pretty seamlessly and also allows for fine-grained data access in their Database offering using a Rules syntax defined in JSON. This is a choice that will help you have an opinionated set of follow on choices. Huge upside here as well is that it works well with ReactNative as well as Flutter if you are doing a mobile application. I've had great luck with it especially on Mobile + Web deployed apps. The problem I've run into here is the Forgot Password and Magic Link emails, which are non-stylable and not customizable easily. It's actually considered a security flaw to allow it and it doesn't seem to be on the roadmap to enable it.
2. Web Templating Frameworks
You will inevitably want to make the customer facing aspects of your MVP look cool. This requires you either to be a great Designer/UX person yourself, or leverage the skills of others. If you are on a budget and lack the skills to do this yourself, you'll want a templating framework. Here is a rundown of my reviewed frameworks and the ultimate decision I made.
This framework has been evolving over the past few years and was originally just a set of HTML templates useful for slamming out great UIs. It has all the basics of FlexBox layouts built in with helper classes for Padding and Margin just like others. However it also comes with helpful add-ons for testing your hypothesis with customers quickly and that is TailwindUI. These are full fake-business-facing applications or websites using Tailwind that you can buy for like $250 (lifetime access!). It will help you stop worrying about pushing pixels and get on with testing whatever it is you think your customers seem to want.
This framework was open-sourced after being developed by Palantir. I found it while searching for window managers to help build a drag-and-drop interface for dashboarding. It will be very likely that if I am going to build a custom React dashboard in the future that I will be using this UI kit to develop it. The fact that Palantir uses it and that it has a lot of community growth and involvement says to me it'll be around for the long haul.
There are two old considerations that seem to always be on my mind when I'm making this decision on a new project.
I did find this awesome list by Retool which I'll mention later. These folks have some pretty amazing tooling for other use cases.
3. Deployment and Hosting
I challenged myself here to find something that solves Continuous Integration (push to Github and see the website appear). This may have limited my choices but I think I found the two major players and landed on the one I really enjoy the most.
Vercel was super freakin' easy to use! I had my first NextJS application up and running in minutes and immediately upgraded to their trial to see if their premium features are worth it. I was able to create subdomains for my myriad of applications, feature-branch-driven previews, analytics on usage, and integration with logging tools to detect errors in clients and builds.
I can't say enough nice things about Vercel, but I can say that it would have been nice to be able to get an annual billing invoice with minor savings. It seems they only support monthly billing.
Netlify was the first option I pursued when exploring this approach to deployment. They were very easy to set up and I still run one web application on Netlify integrated with a CMS system called Contentful. I was able to set up builds on Github branches and a master/main branch deployment. I was also able to hook up Contentful to invoke a webhook that triggers a rebuild.
In both cases above Netlify and Vercel supported SEO-compatible NextJS deployments. Their pricing seemed similar. Deciding between the two was tight and ultimately boiled down to NextJS being developed by Vercel.
Firebase + Circle CI + Github: You can use Circle CI to push to Firebase from Github. This approach was my prior approach and when you measure the cost of CircleCI you aren't saving any money that's for sure. Also, there is complexity in doing a simple deployment. The upside of this approach is you will have full control as you'll write the deployment scripts that CircleCI is invoking to do the deployments.
Heroku: Some folks swear by this but for me I just found NextJS and Netlify to be more approachable and straightforward for my NextJS/React tech stack.