My First 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 SaaS in 2018 can be pretty hard because there are so many options.
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.
So after a few weeks, I decided I didn’t like Django for a 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 it happened…
I had stumbled into a WordPress theme that integrated with some plugins which can handle Stripe integration, checkout, and user account pages.
April 11, 2018.
That was the day that the tech stack for HostiFi was chosen.
WordPress.
LAMP.
The hottest tech stack of … the early 2000's?
Yes.
Certainly not a commonly recommended tech stack for a 2018 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.
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 SaaS startup tech stack? Assuming you are like me — you have no budget, limited programming skills, and a big vision, I say do whatever you can. Make it work in whatever way possible! Maybe you shouldn’t rule out WordPress just because it’s an old, slow, ugly pile of crap.
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.