Markdown

For developers

Overview in five minutes

Organizations, projects and the generated repositories, the path from push to production, and the two ways of working form the frame in which you work with MainPath as a developer.

On this page

From a project configuration, MainPath generates GitLab repositories with a code scaffold, pipelines and deployment configuration and runs everything from git push to the running container; your part is the product code.

Organization, project and repositories

An organization holds members, billing, servers, store accounts and connections such as Sentry, Cloudflare, GitHub, GitLab or SMTP; administrators manage it, developers work on their projects. A project is one product inside it and by default gets a GitLab group on gitlab.application-platform.com with one repository per component, gitlab-profile for the README and two platform-maintained repositories. At the bottom of the project you can choose GitHub or GitLab.com instead:

  • local-configuration holds the editor configuration (.vscode, .idea) and is symlinked into the project folder. Rules for AI agents come from the agent plugin (mp agent install).
  • gitops-configuration describes, per environment (dev and prod), which version runs with which configuration; the pipelines write the versions into it, your own values go into custom.yaml.

From push to production

flowchart LR
  push["Push or merge to main"] --> pipeline["Pipeline: test, version, build"]
  pipeline -->|"automatic"| dev["Dev"]
  pipeline -->|"manual job"| prod["Prod"]

A push or merge to main starts the pipeline, which derives the version from the commit messages (feat:, fix:), builds the artifact and records the state in gitops-configuration; dev is rolled out automatically, production through a manual job in GitLab, and feature branches build without a version commit. Git workflow and deployment describes the flow including rollback.

Where things live

In the web interface at app.application-platform.com you manage organizations, Projects, Servers, Connections, Docker Apps, Domains and Workspaces. GitLab holds the code, pipelines, job logs and merge requests, and Sentry collects errors once a Sentry account is connected under Connections. How Ansible, image tags and servers interact is covered in Architecture.

Two ways of working

Locally, the MainPath Toolbox prepares your machine and clones all repositories into ~/Documents/MainPath/<organization-slug>/<project-slug>/; alternatively you work in a remote workspace, an Ubuntu VM in the cloud. In both cases you open the project folder in your editor and start each application with mp run-local from the repository root, see Local development and CLI and agent plugin. Then you create a new project or import an existing repository.