Skip to content

gemini-hlsw/scheduler

Repository files navigation

GPP Scheduler

Automatic scheduling service at Gemini International Observatory

Python

Local Deployment

The full stack runs via Docker Compose: two backend instances (REALTIME on port 8000, VALIDATION on port 8001) and a React frontend on port 80.

Prerequisites

  • Docker with Compose v2
  • Git LFS — required for the ephemerides data
git lfs install
git lfs pull

Setup

  1. Copy the environment file and fill in any secrets:
cp .env.example .env
  1. Build and start all services:
docker compose build
docker compose up
Service URL Mode
Frontend http://localhost
Backend (Validation) http://localhost:8001/graphql VALIDATION
Backend (Realtime) http://localhost:8000/graphql REALTIME

Optional: Redis

To enable Redis caching, also set collector.with_redis: true in backend/scheduler/config.yaml, then:

REDISCLOUD_URL=redis://redis:6379 docker compose --profile redis up

Updating the GraphQL schema

When the backend schema changes, regenerate backend/scheduler.graphql before rebuilding:

uv run python scripts/export_graphql_schema.py
docker compose build frontend

Development

Backend

cd backend
uv sync --group dev
uv run python scheduler/main.py

Frontend

pnpm install
pnpm frontend dev

Docs

uv sync --group docs
uv run mkdocs serve