GitHub Projects – Organizing Multiple Projects Efficiently

gitgithuborganizationworkflows

I am a freelance developer. I have multiple clients, each client has multiple projects, and each project has multiple distinct pieces of software. I recently migrated all my source control from my old subversion service to a business github account.

My question is, what is a workable strategy for organizing clients, projects, and applications, where the tools at my disposal are GitHub’s interface plus directory structures in my repos?

Currently I just have one repo per application, and I name the repos Client_Project_Application. It’s kind of ugly because I have this huge unmanageable list of repos and also if I want to grant somebody permission to access an entire client or project, it’s tedious to do it for every applicable repo individually. It’s also difficult to find specific repos quickly on the github site and desktop app.

What I want to be able to do is:

  • Keep all clients separate, ideally with the ability to grant a user permission to contribute to an entire client’s collection or an entire project.
  • Keep each application separate, because when I clone the repo on a dev machine I don’t always want everything (practical example: if I have a desktop application with 5gb of data in it and an associated raspberry pi application, there’s no reason to grab the massive desktop app on a pi dev machine — sometimes it’s not even possible).
  • Easily find/browse repos for a specific client and project on github.com and on github desktop, that is, some way to keep associated things close together instead of in the giant recently-used-first flat list of everything.
  • I prefer to work with repos visually as much as possible, that is through github.com and github desktop, especially when it comes to cloning repos because I have a hard time remembering precise repo names.
  • I’d really prefer to not have to add any extra steps into the normal change -> commit -> push workflow.

How is this type of organization usually done? I’m open to a complete change of my current “strategy”, I’ve always been poorly organized and I need to make some big changes here.

Best Answer

You can use organizations, meaning one organization by client.

Withing an organizations you can create multiple repository and manage permission on a repository and/or organization level.

The team plan is probably enough for the need you describe and you can easily include it in the price of your service.

Bonus if you want or need project management for all and across client get a look at Zenhub, they have a pretty good supprt for cross repositories/organizations boards. Again make the clients pay for it.

Related Topic