# Guides

Step by step, from a `docker-compose.yml` on your machine to an app running on OmniArc, with a branch of it. Start with [Get started](https://docs.omniarc.eu/guides/get-started.md): a few minutes, one small shop, and a full copy of it with its data.

Every guide uses the same example, a shop with a JSON API over Postgres, and the panel beside it shows the shop's files.

- [Get started](https://docs.omniarc.eu/guides/get-started.md): Install the CLI, deploy a small shop with its database, then branch it: a full copy of the app and its data.
- [The model](https://docs.omniarc.eu/guides/the-model.md): Arcs, branches and services, and why your compose file needs only one file beside it.
- [Write arc.yaml](https://docs.omniarc.eu/guides/write-arc-yaml.md): From a compose file to an arc.yaml, one decision at a time, with the shop as the example.
- [Deploy](https://docs.omniarc.eu/guides/deploy.md): Check your project on your machine, deploy it with one command, follow it, and redeploy an earlier revision.
- [Branches](https://docs.omniarc.eu/guides/branches.md): A full copy of the app and its data in one command: for a pull request, a migration rehearsal, or a demo.
- [Env and secrets](https://docs.omniarc.eu/guides/env-and-secrets.md): One .env per arc, shared by every branch, set from the CLI and never printed back.
- [Domains](https://docs.omniarc.eu/guides/domains.md): Serve a branch at a domain you own, with its certificate issued for you.
- [Sleep and wake](https://docs.omniarc.eu/guides/sleep-and-wake.md): Stop a branch you are not using and keep its data, and choose how long an unused arc is kept.
- [Costs](https://docs.omniarc.eu/guides/costs.md): What is measured, what it costs so far this month, and how to keep it down.

**Example: shop/arc.yaml**

```yaml
arc: shop
edge: { service: web, port: 3000 }
resources: { cpu: "1", memory: 1Gi, disk: 5Gi }
services:
  web:
    kind: web-service
    contains_pii: false
  db:
    kind: database
    contains_pii: true
    anonymize:
      engine: postgres
      database: shop
      user: shop
      rules:
        - { table: customers, column: email, transform: fake-email }
```
