{
  "id": "compose",
  "displayName": "Docker Compose",
  "summary": "Full stack via docker-compose: separate dev (volume-mounted HMR) and prod (built images) variants. Postgres included.",
  "tags": ["docker", "compose", "dev", "prod"],
  "recommendedFor": "Teams without k8s; VPS or self-hosted deploys; reproducible onboarding for new devs.",
  "tradeoffs": {
    "pros": [
      "Zero-host-install: docker + git is all you need to run the stack",
      "Prod-parity smoke-tests locally via `prod:up`",
      "Onboarding new devs is `pnpm dev:docker` after clone",
      "Postgres, Redis, S3-emulators etc. are trivial additions"
    ],
    "cons": [
      "HMR through volumes is slower than native (200-2000ms vs <50ms, esp. on macOS)",
      "Requires per-app Dockerfile maintenance",
      "Docker Desktop adds ~3GB memory overhead on macOS/Windows",
      "First-time image build for prod variant is slow (5+ minutes)"
    ]
  },
  "files": [
    ".env.example",
    "docker/api.Dockerfile",
    "docker/web.Dockerfile",
    "docker/dev.Dockerfile",
    "docker/.dockerignore",
    "docker-compose.yml",
    "docker-compose.dev.yml",
    "docker-compose.prod.yml"
  ],
  "packageJsonScripts": {
    "dev":             "pnpm -r --parallel dev",
    "dev:hybrid":      "docker compose up -d --wait postgres && pnpm -r --parallel dev",
    "dev:docker":      "HOST_UID=$(id -u) HOST_GID=$(id -g) docker compose -f docker-compose.dev.yml up",
    "dev:docker:bg":   "HOST_UID=$(id -u) HOST_GID=$(id -g) docker compose -f docker-compose.dev.yml up -d",
    "dev:docker:down": "docker compose -f docker-compose.dev.yml down",
    "dev:docker:logs": "docker compose -f docker-compose.dev.yml logs -f",
    "build":           "pnpm -r build",
    "test":            "pnpm -r test",
    "typecheck":       "pnpm -r typecheck",
    "db:up":           "docker compose up -d --wait postgres",
    "db:down":         "docker compose stop postgres",
    "db:reset":        "docker compose down -v postgres && docker compose up -d --wait postgres",
    "db:logs":         "docker compose logs -f postgres",
    "db:psql":         "docker compose exec postgres psql -U app -d {{projectNameSnake}}",
    "prod:build":      "docker compose -f docker-compose.prod.yml build",
    "prod:up":         "docker compose -f docker-compose.prod.yml up -d",
    "prod:down":       "docker compose -f docker-compose.prod.yml down",
    "prod:logs":       "docker compose -f docker-compose.prod.yml logs -f"
  }
}
