Organizing projects in GitHub repositories


I hope this is the right subforum. I think I have GitHub figured out for personal use, the commands, but how do you organize, for starters, small projects?

For example, if you want to add your FreeCodeCamp projects to your GitHub account, do you create a repo for every project or do you create 1 FCC repo and each project gets a separate folder? In the first case, you will end with a lot of repos.

|__freecodecamp (repo)
| |__responsive_web_design (folder)
| | |__tribute_page (folder)
| | |  |_index.html
| | |  |_style.css
| | |__survey_form (folder)
| | |__landing_page (folder)
| |__javascript (folder)
| |__front_end_libs (folder)
|__mywebsite (repo)

Different example. You want to connect different kinds of sensors to a Raspberry Pi. A repo for each sensor or one repo and separate folders for each sensor?

|__freecodecamp (repo)
|__rpi_sensors (repo)
|  |__temperature (folder)
|  |  |__clientside (folder)
|  |  |  |
|  |  |__serverside (folder)
|  |  |__webpage (folder)
|  |__light (folder)
|  |__motion (folder)
|__mywebsite (repo)

How do you organize your projects?

Personally, I have a new repo per project.

It wouldn’t be a dreadful idea to have, say, one frontend fcc repo that housed each of your projects, but I don’t think you gain much from doing that, tbh.

The norm is to have a repo per project…it’s not really a big deal to have loads of them. People rarely casually browse individual people’s repos - searching and following links is common.

If you are worried about the discoverability of your best work, that’s what pinned repos (and perhaps the new username/ are for.


Adding my personal GH just as a data point:


A monorepository (when you have several components or sub-projects inside a single repo) is convenient for code management and dependencies, but it may become a pain in terms of automation (CI/CD). The reason is simple: any change to any of component will be treated as a change to the whole repo, thus you will have to play around some triggers exclusions per directory, and this can make your pipeline scripts sooooo big :slight_smile:

1 Like