My First Micro-SaaS, Choosing the Tech Stack

Four months after launch, my first SaaS business, https://hostifi.net is growing steadily. It’s now over $1,000 MRR, and we’ve helped 75+ customers around the world migrate their on-prem UniFi controllers to the cloud. But I almost gave up before even getting started, and one of the biggest challenges was choosing the tech stack.

Choosing a tech stack for your Micro-SaaS in 2018 can be pretty hard because there are so many options: https://www.indiehackers.com/forum/best-tech-stack-2018-602cbc6dbf

Best Tech Stack 2018

The internet is full of opinions on what is best, and why you should choose one stack over another. I’m not going to debate them here, instead I am just going to share my story about how I finally landed on a functioning tech stack for https://hostifi.net.

Most people recommend starting with the language you are most comfortable with (assuming it has a well-established web framework), rather than starting with a language you haven’t used before just because of some perceived benefits, and I agree with that approach.

For me, I’m more comfortable with Python than any other language. So naturally, in March 2018 when I first started building HostiFi, I was looking at Django and Flask web frameworks. I chose to go with Django because it is the more established of the two, and better suited for large projects.

But I spent several weeks in March and April really struggling to get things working which I considered basic functionality — user registration, Stripe integration, and checkout process…

I had hoped to find all of these pieces already written and open-sourced somewhere, but it seemed I was faced with building it all on my own or fixing other peoples’ broken piles of code which I didn’t understand well, being that I was new to Django.

Cancel Subscription fails · Issue #554 · pinax/pinax-stripe
Issue Summary Trying to cancel a subscription results in no error message displayed to user, but subscription is not deleted. Debug Cancel subscription debug (there doesn't seem to be any error...

So after a few weeks, I decided I didn’t like Django for a Micro-SaaS stack because of this difficult experience with it, and I was considering MEAN, or RoR because I read that they were easier to work with.

Honestly though, I was feeling pretty stuck and considered giving up on HostiFi entirely. I didn’t think I was good enough at programming yet to be able to really pull it off and create my vision.

Thankfully I got an unexpected bump of support from a stranger right around that time.

Troy Dieter found one of my Github repos about how to install Let’s Encrypt SSL on UniFi, and he emailed me about it.

We started talking and it turns out he was working on a very similar idea at the same time!

I told him about the problems I was having with Django, and then we swapped some front-end design ideas back in forth, looking at templates on ThemeForest.

And then I found it.

It was April 11, 2018. I had stumbled upon a WordPress theme that integrated with some plugins which can handle Stripe integration, checkout, and user account pages.

WordPress.

LAMP.

I had never considered it up until this point, but I saw the potential to speed up development right away.

Startuply — Responsive Multi-Purpose Landing Page
One page multi-purpose template that can be used for all kind of startup or company like: software, (SaaS) service, plugins, platforms or offline business and many more; it’s fully responsive design was tested on all major handheld devices. Don’t wait – launch your startup now! Pages included: Main …

Certainly not a commonly recommended tech stack for a 2018 Micro-SaaS startup, but like I said, the point of this post isn’t to debate the merits of one tech stack or another. I’m not even saying this was a great choice either, in fact, I hated the idea of it at first.

But as it turned out, it was really easy to get the basic functionality out of the way, and it actually worked.

I purchased the theme from ThemeForest that day, as well as the plugins from Easy Digital Downloads for Stripe integration, and Recurring Payments.

https://easydigitaldownloads.com/

Just a few days later, I had an entire front-end designed by dragging and dropping stuff in WordPress. I had made a logo and some basic graphics in GIMP for the homepage, I had Stripe integration working, products created, and when the user signed up they just had a blank dashboard for now, but also the ability to manage their subscription and credit card info.

All of those basic functions which had caused me weeks of frustration in Django were now completely taken care of.

Now that I had my tech stack in place, I could finally focus on building my actual product — a UniFi controller hosting service.

Closing thoughts

So my advice for choosing a 2018 Micro-SaaS startup tech stack? Assuming you are like me and you have no budget, limited programming skills, and a big vision, do whatever you can. Make it work in whatever way possible! Maybe you shouldn’t rule out WordPress just because it’s "not cool" anymore.

Or maybe you should give <insert obscure web framework that you enjoy working with but everyone hates on here> another try.

Stop reading about tech stacks, and start trying them. There is no right way. Avoid over-optimizing. Avoid worrying about scaling until you absolutely have to. Create value, not code.