GitLab is a self-hosted way to share code, track changes, and manage projects.
Everything on GitLab lives in a project. Every project stores code in a repository, tracks progress on an issue board, and manages team members through groups.
Repositories and Commits
As with any version of Git, every project on GitLab has its own repository. A repository contains all of the project's code, along with records of every change in the form of commits.
Each commit comes with a brief summary of what was changed, along with an auto-generated "diff" showing how the code changed since the last commit. Commits can be easily undone or reapplied, which makes them a good way of testing new code without needing to worry about breaking anything.
Commits are usually done after every major change, which lets them form an easily browsable history of a project. Every change to the code from start to finish comes attached to the person that made the change, when it happened, and exactly what was changed.
Any time there's a new task, a bug in the code, or even just a suggestion of how to make something better, we can track that as an issue. Issues can take the form of anything from a one-liner to a whole page of details, so anything that needs to be done on a project can be added as an issue.
Issues are organized in a few different ways. Every issue can be tagged with labels, where issues with each label are sorted into a list on the project's issue board. Issues can also be tied to milestones, which are a good way to keep track of long term goals.
Whenever a new issue is submitted, anyone working on the project can assign the issue to someone or claim it for themselves. Anything assigned to someone shows up on their "Todos" page, which means they'll see it every time they open GitLab.
Every repository on GitLab belongs to a group. Groups are GitLab's way of organizing similar projects and keeping track of code for different pieces of the same project. All of ASAP's finished projects are under Past Projects, and everything we're working on right now is either in its own group or under Current Projects.
For instance, the "Lake Stewards" ASAP project includes an Android, an iOS app, and a website. Each platform gets its own GitLab project, and all of them are created under a "Lake Stewards" group.
By working under a group instead of just one repository, different parts of a team can manage their code separately, but everyone on the team still has access to the whole project. Any issues or milestones set up in a group's individual repositories show up in a combined issue board, which makes it easy to manage a project as a whole while keeping track of its different components.
To help keep track of projects after they're finished, every project on GitLab has its own wiki. Wikis can hold anything from code breakdowns to project demos. Team members can use wikis to keep track of important ideas, which leaves an easy to find project intro for anyone looking back in the future.
When learning a new topic, you can take notes straight to a wiki page. Going back through and organizing your wiki will help solidify ideas, with the bonus that anyone in the look back and use your wiki to teach themselves what you've learned.