May 2020 Stats
First, the stats:
Total Installations: 7 Scheduled PRs Merged: 12 PRs Merged: 23 (inc. scheduled) Repositories Watched: 1160
There were some tweaks done under-the-hood both for performance and to tidy up the way statuses are handled. The system is now much better at re-using statuses for scheduled merges (wording has changed slightly to help accommodate this). This prevents some issues where a PR is closed and re-opened, or the user sends two different merge timestamps, for example.
I've also fixed up the DNS and added a redirect to https://gitarborist.com (no ‘www’) is now the canonical url.
Usage Levels 📈
The servers are now watching 1160 repositories. This is not a small number, and while the load is manageable it is certainly easy to see how it is going to increase non-linearly with the number of installations.
I still get the occasional alert about response times, but I am just putting up with it for now. Once there are some paying customers then upgrading to professional-level postgres and dynos on Heroku will likely solve a lot of these issues. I wrote an earlier piece looking at Heroku's Hobby-level Postgres performance here in more detail for anyone interested.
The Road to Ramen-Profitable 🍜
The “launch day” for [https://gitarborist.com] was listing it publicly on the Github Marketplace. Unfortunately, the GH Marketplace has a bit of a chicken-and-egg scenario in their terms. Basically:
- If you list a paid plan elsewhere, you must list a paid plan on GH Marketplace
- To list a paid plan on GH Marketplace, you must get your app verified
- To get your app verified, you must have at least 100 installations
I had originally listed on the Marketplace thinking it was an easy way to get some eyeballs, and also means the billing is done as part of GH's billing (no need to process credit card payments etc), your app just has to process the data from Github when a person buys/cancels/upgrades/etc.
This sounded good at the time, but having got this far I have realised two things:
- Github is not a huge source of traffic for me currently (single-digit installs per-month).
- By the time I get to 100 installations, I'm going to be using some serious server resources (all out-of-pocket if I can't charge people).
As an early stage “startup”, a single customer paying me $1 would be better validation than 99 customers paying me $0. As a result, my focus for the immediate future is to work on adding paid plans (and then temporarily removing the app from the Marketplace until I can get it verified).
June Roadmap 🧭
Main things I'd like to get done over the next month:
- Get user email during signup (I don't currently capture these which makes it pretty hard to announce things to the users 😅)
- Add paid plans (probably using Stripe)
- Add a feature: Automatically change PR base if it was a dependency PR that just got merged. I.e.
PR A -> PR B -> masterwhere
A depends on B, if
Bis merged to
Ashould have its base set to