For my next project, I’ve been assembling a new technological stack to create micro SaaS apps quickly and cheaply before jumping in the code. I’ve not put it to the test yet, but I figured it would be interesting to share how I’ve reasoned about it.
I’m now working with small clients, but I was previously working on bigger enterprise projects where the concerns were different, and I’m missing a few tools in my (virtual) tool bag for the smaller, more nimble stuff. I also have ideas that I want to bring to life and I’m looking to build a set of technologies I can reuse across projects and get to the main features quicker.
I don’t mind paying for services that save me time or give me a significant advantage, but the main goal is to deploy each additional applications for cheap since they won’t be using a lot of resources, at least at first.
If I can keep the bar to profitability lower, I can launch more experiments and each micro SaaS will need a lower MRR (monthly recurring revenue) to earn their keep. It’s hard to know application will be a hit, so I want to be able to keep building without adding 50$-100$ a month to my spending for each application.
Still, I also need to keep my maintenance time low, both since I don’t have a lot of time for my own projects and because I hand off projects to clients and want to keep them as easy to maintain as I can.
If I can use only a few tools with a minimum of custom work between them, it would be best. I’m trying to save money, but it will be more expensive in the long run if I’m stuck maintaining 20 Ubuntu installs holding random Docker images, and remembering all the glue scripts I came up with.
I got started on my frontend stack with Divjoy as a SaaS template to handle the common boilerplate. It includes many of the tools I was looking to use such as Material UI in the frontend and Stripe for payment.
There are a few other good UI kits that comes with the Divjoy, but I’m already familiar with Material UI: it looks nice and it’s easy to theme.
For hosting the frontend static files, I’ll go with Vercel since they have unlimited sites. I may also try their Next.js framework at some point with server-side rendering and it just works. Netlify would have been a good option at a similar price point, but their marketing material was not as clear about how many sites were allowed.
Since my projects are simple, I want to aim for a “backend as a service” first and see what else I need if I hit any limits. This should handle all the main backend parts like the database and its api, authentication and file storage.
I’m afraid of pay-as-you-go like Firebase since I’m not going to keep a close eye on everything across many applications and don’t want Google to send me a big bill if I make a mistake. I prefer something with a clear cap.
For this reason, I’m going to settle on Supabase for my backend as a service. Given that I don’t want to too much maintenance, I’ll purchase from Supabase instead of self hosting it.
Only problem with Supabase is that they’re charging that 25$ per project, but if I structure my data well I should be able to reuse that for all my projects. I can always spin off another project and move the data if I want to sell one of the micro SaaS, or if one really takes off and uses up too much of the quota.
I use Namecheap as my registrar already with Cloudflare as the DNS server for a few small sites like this blog so I can configure emails and the like separately, so I’ll keep going with that solution. Right now the free plan does the job since I’m only using them for the DNS and some tiny static sites on Cloudflare Workers.
For git source control I already have a bunch of private projects on Bitbucket and I have no problems with it, so I’ll stick with it.
Finally, I’ll be adding UptimeRobot to minimally keep an eye on things and check if each project is still up. The free plan should be enough for my needs for a while since it can monitor the uptime of 50 “things” such as a SSL certificate or a specific page. I’m probably just going to monitor a single page that requires api calls for each project since most elements are provided by third-party services.
Here is how it should cost to keep all my micro SaaS up, at least while they are small:
|Products||Pricing (in USD)|
|Vercel||20$ for the cheapest commercial tier with 1TB bandwidth and preview deploys.|
|Sentry||0$ for 5k errors logged. I doubt I’ll reach the 26$ plan with 50k error anytime soon.|
|Supabase||25$ for the paid tier so the database stays up.|
|Cloudflare||0$ for the free tier with unlimited DNS server.|
|Postmark||10$ for the first 10 000 emails a month, transactional or newsletter.|
|Bitbucket||0$ for the free tier with unlimited private repo.|
|UptimeRobot||0$ for 50 free items monitored.|
|Domain name||About 1$-ish by domain depending on the TLD.|
So I’m looking at around 55$ +1$ each for the domain to run a bunch of tiny SaaS applications, not bad!
If I do make a sale I’ll have Stripe fees at the minimum, and I’ll need to do support and marketing but that will need to be considered in each product’s pricing.
My next step is now to try this out with my next micro SaaS to see if I missed anything and how it will turn out.