{
  "id": "compose-mariadb",
  "displayName": "Docker Compose (MariaDB + MinIO)",
  "summary": "Full stack via docker-compose: MariaDB with binlog CDC (ROW) + MinIO object storage. The local-dev shape for Voltro apps that deploy to MariaDB / K8s.",
  "tags": ["docker", "compose", "mariadb", "cdc", "minio", "storage"],
  "recommendedFor": "Apps targeting MariaDB (company DB) with real-time CDC + file storage; the local mirror of the Helm baseline.",
  "tradeoffs": {
    "pros": [
      "Boots MariaDB (binlog ROW) + MinIO with one `pnpm db:up` — CDC works single-node",
      "Local mirror of the K8s/MariaDB production shape (no surprises at deploy)",
      "Object storage (avatars, AI blobs) works locally via MinIO",
      "Zero-host-install: docker + git is all you need"
    ],
    "cons": [
      "HMR through volumes (dev:docker) is slower than native (200-2000ms, esp. macOS)",
      "MariaDB binlog retention grows on disk; tune binlog-expire-logs-seconds for long-lived volumes",
      "Docker Desktop adds ~3GB memory overhead on macOS/Windows"
    ]
  },
  "files": [
    ".env.example",
    "docker/api.Dockerfile",
    "docker/web.Dockerfile",
    "docker/dev.Dockerfile",
    "docker/.dockerignore",
    "docker/mariadb-init.sql",
    "docker-compose.yml",
    "docker-compose.dev.yml",
    "docker-compose.prod.yml"
  ],
  "packageJsonScripts": {
    "dev":             "pnpm -r --parallel dev",
    "dev:hybrid":      "docker compose up -d --wait mariadb minio && docker compose up -d createbuckets && 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 mariadb minio && docker compose up -d createbuckets",
    "db:down":         "docker compose stop mariadb minio",
    "db:reset":        "docker compose down -v && docker compose up -d --wait mariadb minio && docker compose up -d createbuckets",
    "db:logs":         "docker compose logs -f mariadb",
    "db:sql":          "docker compose exec mariadb mariadb -uapp -papp {{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"
  }
}
