# Why I decided to open-source my SaaS

[DiffHub](https://diffhub.com) 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](https://en.wikipedia.org/wiki/Software_as_a_service) 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.
![diffhub-notes.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1627914178087/21CIqaCfc.png)

But 667 hours 😈 and  700+ commits later I was starting to run out of steam.

![diffhub-stats1.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1627913634221/3MmEUdYXi.png)

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](https://en.wikipedia.org/wiki/Shiny_object_syndrome), better not kill the momentum, eventually procrastinating with other pet projects.

![imback.gif](https://cdn.hashnode.com/res/hashnode/image/upload/v1627972983443/jADBGqRSC.gif)

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.
![Screenshot 2021-08-02 at 17.46.26.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1627915624850/v635i3Ts2.png)

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](https://en.wikipedia.org/wiki/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](https://www.serverless.com) framework and runs in AWS and makes use of services such as API Gateway, Lambda, DynamoDB, or SES. The tests are run using [Axios](https://axios-http.com/) for the API testing and [Puppeteer](https://pptr.dev/) for the browser tests. The test assertions are using [Jest](https://jestjs.io/docs/expect).

The front end is a [Vue.js](https://vuejs.org/) 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](https://github.com/stefanolaru/diffhub/blob/main/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](https://github.com/stefanolaru/diffhub), I won't mind if you star the repo :)

If you want to stay in the loop with the progress please request private beta access on [DiffHub](https://diffhub.com/) homepage or [DM me on Twitter](https://twitter.com/messages/compose?recipient_id=14350623).

Let's see where all this goes!
