services:
  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    container_name: excalidash-backend
    environment:
      - DATABASE_URL=file:/app/prisma/dev.db
      - PORT=8000
      - NODE_ENV=production
      # Required for horizontal scaling (k8s): uncomment and set to same value on all instances
      # - CSRF_SECRET=${CSRF_SECRET}
    volumes:
      - backend-data:/app/prisma
    networks:
      - excalidash-network
    restart: unless-stopped
    healthcheck:
      test:
        [
          "CMD",
          "node",
          "-e",
          "require('http').get('http://localhost:8000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))",
        ]
      interval: 30s
      timeout: 10s
      retries: 3

  frontend:
    build:
      context: .
      dockerfile: frontend/Dockerfile
    container_name: excalidash-frontend
    ports:
      - "6767:80"
    environment:
      # Backend URL for nginx proxy (host:port format, no protocol)
      # Override for reverse proxy setups (e.g., excalidash-backend.svc.cluster.local:8000)
      - BACKEND_URL=backend:8000
    depends_on:
      - backend
    networks:
      - excalidash-network
    restart: unless-stopped
    healthcheck:
      test:
        [
          "CMD",
          "wget",
          "--quiet",
          "--tries=1",
          "--spider",
          "http://localhost:80",
        ]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  excalidash-network:
    driver: bridge

volumes:
  backend-data:
