Installation¶
Prerequisites¶
Tool |
Version |
Purpose |
|---|---|---|
≥ 24 |
Container runtime |
|
Docker Compose |
≥ 2.20 (bundled with Docker Desktop) |
Service orchestration |
Git |
any |
Repository checkout |
No local Node.js or Python installation is required — all services run inside containers.
Setup¶
1. Clone the repository
git clone https://github.com/Gravefax/SQS-Team-11
cd Quizzard-of-Oz
2. Create the environment file
cp .env.example .env
The default values in .env.example work out of the box for local development. The Keycloak quizzard realm is imported automatically on first startup — no manual configuration is required.
Note:
TRIVIA_API_KEYis optional. The Trivia API works without a key, but rate limits may apply for heavy usage. Leave the value empty to use the unauthenticated tier.
3. Start all services
docker compose up -d
Docker Compose starts four services in dependency order:
Service |
URL |
Description |
|---|---|---|
PostgreSQL |
— |
Persistent database (internal only) |
Keycloak |
http://localhost:8080 |
Identity provider; admin UI at |
Backend |
http://localhost:8000 |
FastAPI backend; OpenAPI docs at |
Frontend |
http://localhost:3000 |
Next.js application |
The backend waits for PostgreSQL and Keycloak to pass their health checks before accepting traffic. The frontend starts after the backend is healthy.
4. Open the application
Navigate to http://localhost:3000 and use the Register link to create an account via the Keycloak login page.
Verifying the Stack¶
Check that all services are running:
docker compose ps
All four services should show running or healthy. Check the backend health endpoint:
curl http://localhost:8000/health
Stopping and Cleaning Up¶
Stop all services (data is preserved in Docker volumes):
docker compose down
Stop and remove all data volumes (full reset):
docker compose down -v
Local Development Without Docker¶
For development with hot reload, each component can be started individually. Prerequisites for this approach:
Python 3.12+ (backend)
Node.js 22+ and pnpm (frontend)
A running PostgreSQL 18 instance and Keycloak 26
Backend
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
Frontend
cd frontend/quizzard-of-oz
pnpm install
pnpm dev
Ensure the .env values for KEYCLOAK_URL, POSTGRES_HOST, and NEXT_PUBLIC_KEYCLOAK_URL point to the correct host addresses for your local services.
Keycloak Admin Access¶
The Keycloak admin console is available at http://localhost:8080/auth/admin with the default credentials admin / admin (configured in .env via KEYCLOAK_ADMIN and KEYCLOAK_ADMIN_PASSWORD).
The quizzard realm is automatically imported from keycloak/realm-export.json on startup. The quizzard-frontend client is pre-configured for PKCE login from http://localhost:3000.