- Auth API client (src/api/auth.ts): login, register, me, api-key endpoints - AuthContext: React context managing auth state, mode detection, JWT tokens - LoginPage: clean dark-themed login form with error handling - RegisterPage: invite code + registration with password validation - App.tsx: BrowserRouter + AuthProvider wrapper, mode-conditional routing - Single mode: straight to app, no auth required - Multi mode: redirect to /login, auth-gated access - main.tsx: BrowserRouter + AuthProvider initialization - react-router-dom added as dependency - docker-compose.yml: KITHARA_MODE, KITHARA_ADMIN_USER, KITHARA_ADMIN_PASS env vars - requirements.txt: pinned bcrypt==4.0.1 for passlib compatibility - Tested: multi-mode admin bootstrap, JWT login, auth/me round-trip all confirmed
27 lines
673 B
YAML
27 lines
673 B
YAML
services:
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "8100:8000"
|
|
volumes:
|
|
- ./data:/app/data
|
|
environment:
|
|
- LYRIA_API_KEY=${LYRIA_API_KEY}
|
|
- LYRIA_DEFAULT_MODEL=${LYRIA_DEFAULT_MODEL:-lyria-3-clip-preview}
|
|
- KITHARA_MODE=${KITHARA_MODE:-single}
|
|
- KITHARA_ADMIN_USER=${KITHARA_ADMIN_USER:-admin}
|
|
- KITHARA_ADMIN_PASS=${KITHARA_ADMIN_PASS:-admin}
|
|
- TZ=${TZ:-America/New_York}
|
|
restart: unless-stopped
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
ports:
|
|
- "3100:3000"
|
|
depends_on:
|
|
- backend
|
|
restart: unless-stopped |