# What is GitLab?

GitLab is where the code of your projects lives and where the pipelines run, and day to day you only need a few of its functions.

> Source: https://www.mainpath.ai/en/docs/what-is-gitlab/

GitLab is a platform for managing code, comparable to GitHub: it stores repositories, shows their change history, lets changes be reviewed, and runs pipelines. MainPath operates its own GitLab at `gitlab.application-platform.com`, where you sign in with the same account as on MainPath. On the project you can choose GitHub or GitLab.com instead; pipelines then run on their hosted runners, see [GitHub: credentials]({{< relref "github-credentials" >}}) and [GitLab: credentials]({{< relref "gitlab-credentials" >}}).

## How your projects are laid out in GitLab

A group is a folder for several repositories with shared members and permissions. Every organization has a group and every project a subgroup under `orgs/<organization>/<project>/` with one repository per component, for example `backend` and the name of your app, plus `local-configuration` with the editor configuration and `gitops-configuration`, which describes which version runs with which settings on dev and production.

MainPath maintains the files it generates there, above all `.gitlab-ci.yml` and `env/*.generated.env`; you do not edit these by hand, and everything else belongs to you.

## What you find in GitLab

The file view shows the current code and the list of commits. The branch `main` is the main state; whatever arrives there is rolled out to dev by the pipeline. Under **Merge Requests**, changes can be reviewed before they land on `main`, which is possible but not required. Under **CI/CD → Pipelines** the pipelines run, and in the container and package registry the pipeline stores Docker images and packages, see [Libraries]({{< relref "libraries" >}}).

## Why you open GitLab day to day

Cloning, committing, and pushing happen in your editor, in the terminal, or through an AI agent, see [Save changes and publish]({{< relref "save-and-publish" >}}). You open GitLab itself to watch pipelines and start the production job via the play button, to read the log when a pipeline is red, and to comment on and approve merge requests. The repository links are in the project overview of MainPath.

What the pipelines do in detail is described in [What are pipelines?]({{< relref "what-are-pipelines" >}}).

