> **Page index:** https://km.oslo.systems/llms.txt lists every page on this site, with a link to its Markdown version.

# Repository types

The Golden Path supports three ways to split infrastructure code and application code across GitHub repositories. Choose a repository type before you set up Terraform automation or CI/CD for a repository.

| Repository type | What the repository contains | Example | Supported |
| --- | --- | --- | :---: |
| Infrastructure repository<br>(*infra*) | Only Terraform code. Often many stacks per environment. | [`pirates-iac`](<https://github.com/oslokommune/pirates-iac>) | ✅ |
| Application repository<br>(*app*) | Only application code, for one application or for many applications (application monorepo). | [`pirates-app-zebra`](<https://github.com/oslokommune/pirates-app-zebra>), [`pirates-apps`](<https://github.com/oslokommune/pirates-apps>) | ✅ |
| Application repository with infrastructure<br>(*hybrid*) | Code and infrastructure for one application: one stack per environment, plus an optional data stack. | [`pirates-app-swordsmith`](<https://github.com/oslokommune/pirates-app-swordsmith>) | ✅ |
| Infrastructure repository with application code | Application code and general infrastructure, such as networking or load balancers. | \- | ❌ |

Most teams have one infrastructure repository that contains their infrastructure code, or most of it, and one or more application repositories of either supported type.

## Infrastructure repositories with application code

The Golden Path doesn't support the repository type *infrastructure repository with application code*: a repository that contains general infrastructure code and application code. Infrastructure repositories and application repositories use different automations, [Terraform automation](<https://km.oslo.systems/terraform-automation/how-it-works/index.md>) and [CI/CD](<https://km.oslo.systems/application/how-cicd-works/index.md>). These automations optimize for different things, and aren't designed to work together.

Instead, choose one of these options:

- **Option A**: Move the application code to a new repository. You get an infrastructure repository and an application repository.
- **Option B**: Move the application code and its infrastructure to a new repository. You get an infrastructure repository and an application repository with infrastructure.

If you're not sure which option fits your team, [contact Utviklerflyt](<https://km.oslo.systems/help/contact-us/index.md>).
