services:
  postgres:
    image: postgres:18-alpine
    environment:
      POSTGRES_DB: pokopia
      POSTGRES_USER: pokopia
      POSTGRES_PASSWORD: pokopia
    volumes:
      - postgres18_data:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U pokopia -d pokopia"]
      interval: 5s
      timeout: 3s
      retries: 10

  backend:
    build:
      context: .
      dockerfile: backend/Dockerfile
    environment:
      DATABASE_URL: postgres://pokopia:pokopia@postgres:5432/pokopia
      BACKEND_PORT: 3001
      TRUST_PROXY: ${TRUST_PROXY:-false}
      FRONTEND_ORIGIN: ${FRONTEND_ORIGIN:-http://localhost:20015}
      APP_ORIGIN: ${APP_ORIGIN:-http://localhost:20015}
      UPLOAD_DIR: /app/uploads
      BACKEND_PUBLIC_ORIGIN: ${BACKEND_PUBLIC_ORIGIN:-http://localhost:20016}
      RESEND_API_KEY: ${RESEND_API_KEY:-}
      EMAIL_FROM: "${EMAIL_FROM:-Pokopia Wiki <onboarding@resend.dev>}"
    ports:
      - "20016:3001"
    volumes:
      - backend_uploads:/app/uploads
    depends_on:
      postgres:
        condition: service_healthy

  frontend:
    build:
      context: .
      dockerfile: frontend/Dockerfile
      args:
        VITE_API_BASE_URL: ${VITE_API_BASE_URL:-http://localhost:20016}
        VITE_SITE_URL: ${VITE_SITE_URL:-https://pokopiawiki.tootaio.com}
    environment:
      PORT: 20015
    expose:
      - "20015"
    depends_on:
      - backend

  frontend_gateway:
    image: nginx:1.29-alpine
    ports:
      - "20015:20015"
    volumes:
      - ./frontend/gateway/nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - ./frontend/gateway/maintenance.html:/usr/share/nginx/html/maintenance.html:ro
    depends_on:
      - frontend

volumes:
  postgres18_data:
  backend_uploads:
