Why I decided to open-source my SaaS
A short story on how I successfully built but failed to run a software-as-a-service product and why I decided to open source it.
DiffHub makes it really easy to create automated tests for websites and APIs.
It helps you avoid those embarrassing situations where a minor change creates a big mess in production, helps you spend less time doing boring stuff like manual testing, helps you create automated tests, visually, with no code.
I started DiffHub as a hobby side project, to scratch my own itch.
It quickly became a challenge, I really wanted to build it, also wanted it to solve problems for my consulting clients, wanted to be scalable, and wanted to hone my Serverless & AWS skills. Why not turn it into a SaaS then?
I put off some consulting projects and got head down, waking up at 4 am (without alarm) to code, and sacrificed many weekends.
I probably made all the possible mistakes that can send a product to the SaaS graveyard:
- started coding without a clearly defined scope
- didn't talk to the users enough
- didn't write documentation
- didn't have pricing so didn't charge anyone
- didn't do much marketing
- thought if I build it they will come (luckily, a bunch did)
- put things on autopilot
I'm really happy I did them, it was a joy to build DiffHub, a very fulfilling experience as a developer. I learned a lot, and not only on the dev side. I also received tons of extremely helpful feedback and got connected with a lot of smart people.
The product didn't do bad, private beta went live in late 2019, just a few weeks before Covid, beta requests started pouring in, I onboarded a dozen users, received feedback (generally positive), implemented, and repeated the process weekly.
I kept a product-building journal from the first commit, reading it now makes me chuckle, building a SaaS app is like a roller coaster, here are a few excerpts.
But 667 hours 😈 and 700+ commits later I was starting to run out of steam.
The motivation slowly faded as the big development challenge was pretty much completed, "just" needed to fix bugs, do marketing, sales, and write docs. The not-so-sexy things for a developer.
My main business is web development & consulting, in early March 2020 times got very turbulent due to Covid, lockdowns, a lot of uncertainty, being quite risk-averse I decided to put the side projects on autopilot and focus on my main biz until things settle.
Autopilot is not suitable for a SaaS business, especially when running a service in this field you need to grind, ship, talk, talk, ship, talk ... Putting things on autopilot may work for a couple of weeks, but it will kill the momentum.
We, indie hackers, have some degree of shiny new object syndrome, better not kill the momentum, eventually procrastinating with other pet projects.
A few months later, the consulting business was thankfully doing very well. I started to think about how to push DiffHub forward, but realized this product is a bigger hat than I could wear by myself, in order to move the needle I had to either jump all-in in the SaaS roller-coaster, bring someone in and look for funding.
Running a SaaS product as a (part-time) solo founder is almost a mission impossible. Very few nail it, hats off to them!
I have to admit that I also thought about shutting it down.
I let it sit for a few more weeks before making a decision, wrote down the reasons I built it, running it as a SaaS business wasn't one of them. Seems I got caught in the SaaS frenzy, again.
So, why make it open source?
I fancy the idea of building in public and give back to the community, is there a better way to do that than releasing and maintaining an open-source project?
By making it open-source:
- it continues to help people save time by automating the boring repetitive tasks
- allows running automated tests in your AWS account for free (depends on usage, but it's easy to fit within AWS free tier, and pay-as-you-go afterwards)
- eliminates the bus factor risk of a side-project ran by a solo founder
- gives users a comfort level as they can have a full picture of how their sensitive data is stored and used
- allows others to contribute to the project, improve & expand it
- allows me to give back to the community, share my learnings and learn from others
I'm very aware that open-source software is aimed at enthusiasts, self-hosting requires some expertise, and it adds additional effort in maintaining, managing, monitoring.
About the stack
The backend is built on the Serverless framework and runs in AWS and makes use of services such as API Gateway, Lambda, DynamoDB, or SES. The tests are run using Axios for the API testing and Puppeteer for the browser tests. The test assertions are using Jest.
The front end is a Vue.js app.
DiffHub wasn't built to run on-premise, so I'll have to adapt a few things, migrate the functionality from the SaaS app into the open-source repo.
The serverless.yml contains a CloudFormation template that will deploy the entire service & resources without headaches. You can have it up and running in less than a minute, it also features a powerful API that can be easily integrated into CI/CD pipelines.
The UI won't be included in the initial open-source release, tests can be managed via API for now.
The code will be available on GitHub, I won't mind if you star the repo :)
Let's see where all this goes!