services:
  postgres:
    image: kartoza/postgis:latest
    container_name: line-of-sight-db
    environment:
      - POSTGRES_DB=line_of_sight
      - POSTGRES_USER=line_of_sight
      - POSTGRES_PASS=line_of_sight_pass
    volumes:
      - pgdata:/var/lib/postgresql
      - ./docker/init.sql:/docker-entrypoint-initdb.d/init.sql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U line_of_sight"]
      interval: 5s
      timeout: 5s
      retries: 5

  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile
    container_name: line-of-sight-backend
    # Removed public port exposure for security; accessible via frontend proxy
    # ports:
    #   - "3051:3051"
    environment:
      - DATABASE_URL=postgresql://line_of_sight:line_of_sight_pass@postgres:5432/line_of_sight
      - PORT=3051
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      - ./backend:/app
      - /app/node_modules

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    container_name: line-of-sight-frontend
    ports:
      - "3050:3050"
    environment:
      - VITE_API_URL=/api
    depends_on:
      - backend
    volumes:
      - ./frontend:/app
      - /app/node_modules

volumes:
  pgdata:
