feat: Phase 1 frontend - auth UI with KITHARA_MODE switch

- 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
This commit is contained in:
rin.kagamine committed 2026-05-31 12:15:13 -04:00
1 parent b3f273942e
commit c571e28725
10 files changed
+523 -18

No files matched your search

+4 -1
View File
@@ -10,6 +10,9 @@ services:
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
@@ -21,4 +24,4 @@ services:
- "3100:3000"
depends_on:
- backend
restart: unless-stopped
restart: unless-stopped