Scaffolder admin-ui/ (Vite + React + TypeScript, almindelig CSS) med en minimal login-side (POST /auth/login + GET /auth/me) der beviser hele kæden virker. Vites build skriver direkte til app/admin_dist/. Admin-UI'et serveres af samme FastAPI-app som API'et og den offentlige side, men på sit eget dedikerede domæne (ADMIN_DOMAIN, default admin.localhost) via en ny AdminDomainDispatch-middleware (app/admin_site.py) der genbruger Host-header-teknikken fra 8b: den offentlige side ejer allerede roden "/" domæneopløst, så admin-UI'et kan ikke dele det domæne uden at kollidere. Samme trick undgår CORS helt, da admin-UI'ets fetch-kald går til samme origin. API-kald (/auth, /participants, ...) passerer uændret gennem til det almindelige API uanset domæne; alt andet på admin-domænet serveres fra den byggede SPA med index.html-fallback for client-side routing. Et sikkerhedsnet deaktiverer dispatch'en stille hvis admin_dist/ mangler (frisk clone uden frontend-build), i stedet for at crashe hele appen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
32 lines
439 B
Text
32 lines
439 B
Text
# Python
|
|
__pycache__/
|
|
*.py[oc]
|
|
*.egg-info/
|
|
build/
|
|
dist/
|
|
|
|
# venv / uv
|
|
.venv/
|
|
|
|
# Env / secrets
|
|
.env
|
|
|
|
# DB
|
|
*.db
|
|
*.sqlite3
|
|
|
|
# Editors / OS
|
|
.vscode/
|
|
.idea/
|
|
.DS_Store
|
|
|
|
# Test cache
|
|
.pytest_cache/
|
|
|
|
# Raw personal-data exports used for one-off migrations — not for version control
|
|
old_participants.json
|
|
old-emails/
|
|
|
|
# React admin-UI (admin-ui/) build artefact + dependencies — genskabes af npm run build
|
|
app/admin_dist/
|
|
admin-ui/node_modules/
|