ChangeHub has been part of our madewithlove family for a long time. The first-ever commit dates back to November 8, 2014, during our team retreat in Lisbon where it started out as a small proof of concept to make it easier for our product managers and clients to know what changes our engineers were making on a daily basis. At the beginning of this year, we set out a goal to pivot ChangeHub from an internal tool into a product that can be used by any team out there.
Since its inception in 2014, ChangeHub has been used for a lot of our internal and client projects. Their feedback has shaped the product over the course of those years. When we looked at making this a product usable by everyone we started by asking them: “What is your current biggest pain point with ChangeHub?”
This question got us a lot of responses and we noticed a certain trend in their answers: it was very difficult to get your entire team started on ChangeHub and to keep it working over time. Naturally, we want people to keep using our product, so we decided that this would become our main priority.
We started by analysing the existing onboarding flow to better understand the frustrations and we very quickly ran into them. Here’s a brief overview of the steps that were previously needed to get your team started with their first changelog:
- Sign up for an account.
- Connect your GitHub account.
- Create a project from one of the repositories.
- Invite your team members to the project.
So far this still sounds pretty straightforward, but the real problems surfaced when that team member wanted to start a different project. They would have to go through the exact same steps as before, connecting their GitHub account, create a project, and invite all the other team members from the previous project. This is a lot of extra steps to take!
The fact that projects were always tied to a single user’s Github connection also led to some other frustrating experiences. For example, when the project’s creator would leave the team and lose access to the repository on Github, then the changelogs for that project would no longer be retrieved. Another common issue was that when a user created multiple projects they would start running against GitHub’s rate limiting.
Discovering a solution
Now that we had a clear understanding of the problems we set out the following goals that we wanted to achieve:
- Give a user the ability to join multiple companies on ChangeHub.
- Improve the onboarding process for companies looking to use ChangeHub
- Make it easier to manage third-party connections (such as GitHub).
Based on these we started researching possible solutions. We didn’t want to reinvent the wheel so we took a look at existing products that offer similar functionalities.
The first solution we came up with was to use the GitHub organizations you had access to. We already offered a “Sign in with GitHub” option so this seemed like the easiest (and fastest) way forward. However, we quickly realized that this would tie us directly to GitHub and make it harder to offer other integrations in the future.
We then explored the idea of allowing you to create an organization within ChangeHub. This seemed like a better fit for our use-case since we could allow you to install all kinds of integrations on an organization instead of a personal level.
We started by building a simple version of organizations with a limited amount of features. The user should be able to:
- create an organization
- invite members to join the organization
- switch between the organizations they are a member of
We managed to do this fairly quickly by adapting our existing invitation system to work with both projects and organizations.
The next step was to be able to install integrations into your organization. We already had existing functionality for this but it was specifically built for personal accounts and not easy to adapt. We decided to rebuild this from scratch and make it more easily extendable for future integrations.
We made use of this opportunity to look more closely into offering a GitHub App. The biggest benefit is that it allows us to work directly with the GitHub organization instead of an individual and gives the organization owner full control over which repositories are accessible by ChangeHub. We were also able to reuse a huge chunk of code of the legacy GitHub integration for retrieving changes that happen in your repositories.
This rewrite has already paid back its investment in recent months. We’ve added several new integrations such as Bitbucket Server and GitLab, which is currently in beta, and we are exploring adding an integration with Bitbucket’s SaaS platform.
The final part was being able to create projects within the organization. The biggest challenge was that we wanted to have our user’s existing projects be part of their new organization without forcing them into recreating all of their projects. To solve this we built a small migration tool that allowed us to transfer existing projects into the organization, with a seamless transition from various personal accounts to an organization.
We’ve made some tremendous improvements in how you and your team can get started with ChangeHub but there is definitely still room for improvement. If you have any feedback about your experience please let us know.
An organization starts at €19/mo with a free 14-day trial and gives you access to unlimited team members and tracked repositories. We also offer a free plan aimed at individuals, allowing you to track up to 3 repositories on GitHub.
Reading tip: Learn about Technical Debt and how to Handle it