> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fixcodenow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure a stack

> Describe services, access, health checks, jobs, data, and secrets.

FixCodeNow uses your existing Dockerfiles and `compose.yaml` or `compose.yml`. Compose is the source of truth for service names, builds, commands, ports, dependencies, networks, and volumes.

## Multi-service projects

Represent every cooperating service in one Compose file. This can include frontends, APIs, workers, scheduled jobs, databases, queues, caches, migrations, and setup commands.

Use a named Compose volume for persistent data. Use `DATABASE_URL` for relational database connections.

## FixCodeNow metadata

Add `x-fixcodenow` only when Compose cannot express the deployment intent:

```yaml theme={null}
x-fixcodenow:
  primary: web
  services:
    web:
      access: public
      health: /health
    api:
      access: private
    cleanup:
      type: cron
      schedule: "0 * * * *"
    migrate:
      type: release
```

Supported stack metadata is `primary`. Supported service metadata is `type`, `access`, `protocol`, `health`, and `schedule`.

## Supply secrets

Reference secrets by name in Compose:

```yaml theme={null}
services:
  api:
    environment:
      API_KEY: ${API_KEY}
```

Put the values in a gitignored file outside the committed source when possible:

```bash theme={null}
chmod 600 /path/to/private/fixcodenow.env
fixcodenow ship . --env-file /path/to/private/fixcodenow.env
```

The file uses `KEY=VALUE` lines:

```text theme={null}
API_KEY=replace-with-your-value
DATABASE_PASSWORD=replace-with-your-value
```

Never commit secret values in source, Dockerfiles, Compose files, or images.
