1 Product - 70 Repositories
For almost 5 years, our team has been working exclusively on a single product: Tower, our Git desktop client. From the outside, one might think that a bare handful of Git repositories should be enough to run the show.
In fact, however, we have over 70 Git repositories to manage. Here's an overview of what powers Tower and our team.
When people think or talk about a product company, they often only see the finished product itself. But much of the company's work happens behind the scenes. Infrastructure, marketing, support, documentation, and much more is necessary to actually run a software business.
It's exactly the same here at Tower. Our more than 70 Git repositories help us in the following categories:
Websites & Blogs
Over the years, we've assembled more than a handful of web projects: the Tower product website (git-tower.com) and the app's help documentation (git-tower.com/help), the Tower blog (git-tower.com/blog), our learning platform (git-tower.com/learn) and a couple more.
We've put quite some time and effort into two main ecosystem applications: one takes care of everything around license generation and management, while another one helps handle updates of the Tower app.
Although it's not programming code, we nonetheless use Git repositories to manage most of our conceptional work. This concerns our website and blog projects as well as (of course) our main product in its different versions.
Over time, we've created a couple of internal libraries - to improve reuse, generalization, and overview. In Git, library code is typically kept in its own, full-blown repository and then included as a "Submodule". Tower, for example, includes 12 Submodules at the moment (9 of which are our own, internal repositories and 3 are third-party inclusions).
For some of our (admittedly not too complex) web projects, we have also separated some code out into libraries and boilerplate projects.
Since we make a Git client, a couple of test Git repositories are also valuable for us. Many of the test scenarios, however, are created dynamically / programmatically.
Most of our document management and file sharing happens in our Google Drive account. However, we still have some Git repositories for the more important documents. This is to ensure these files are both fully versioned and as much under our control as possible.
As with many things, the amount of work behind the scenes is often surprising. At the very least, it sure surprised us.