# Manage development stack — backend + frontend only.
#
# Manage does NOT deploy its own Grafana/Prometheus/Loki/Alertmanager stack.
# It exposes a /metrics endpoint and optional Alertmanager proxy endpoints so
# an *existing* observability deployment can scrape/consume them.
#
# For a ready-to-use example observability stack, see
# docker-compose.observability.yml and docs/observability-runbooks.md.

services:
  backend:
    build:
      context: .
      dockerfile: backend/Dockerfile
    container_name: backend
    command: uvicorn media_library_viewer_api.main:app --host 0.0.0.0 --port 8000 --reload
    environment:
      AUTH_ENABLED: "false"
      OIDC_ISSUER_URL: ${OIDC_ISSUER_URL:-}
      OIDC_AUDIENCE: ${OIDC_AUDIENCE:-}
      OIDC_JWKS_URL: ${OIDC_JWKS_URL:-}
      LOG_LEVEL: ${LOG_LEVEL:-INFO}
      LOG_FORMAT: ${LOG_FORMAT:-text}
      PROMETHEUS_ENABLED: "true"
      SSH_KNOWN_HOSTS_PATH: /app/backend/.cache/known_hosts
      MANAGE_ENCRYPTION_KEY: ${MANAGE_ENCRYPTION_KEY:?set MANAGE_ENCRYPTION_KEY in your .env}
    ports:
      - "8000:8000"
    volumes:
      - ./backend:/app/backend
      - ${BACKEND_CACHE_DIR:-./backend-cache}:/app/backend/.cache
    networks:
      - web
    restart: unless-stopped

  frontend:
    build:
      context: .
      dockerfile: frontend/Dockerfile
      target: dev
    container_name: frontend
    environment:
      VITE_API_URL: "/api"
      VITE_OIDC_ENABLED: "false"
      VITE_DEV_API_PROXY_TARGET: "http://backend:8000"
    ports:
      - "5173:5173"
    volumes:
      - ./frontend:/app/frontend
      - frontend_node_modules:/app/frontend/node_modules
    depends_on:
      - backend
    networks:
      - web
    restart: unless-stopped

networks:
  web:

volumes:
  frontend_node_modules:
