Phase 1: Kern mit Plugin-System, Auth/Rollen, Migrations, Plugin-Stubs
- redaktionskern (src/): schlanker Kern — App-Fabrik, Plugin-Loader (Entry-Points + plugins/-Verzeichnis), Migrations-Laufzeit (schema_migrations pro Plugin, SQLite-/Postgres-portabel), Auth mit Argon2id + Session-Cookies, Rollen admin/redakteur/rezensent, Benutzerverwaltung für Admins - plugins/: 8 ladbare Stubs (neuheiten, dedup, planung, archiv, erinnerung, benachrichtigung, audit-log, export) nach Plugin-Vertrag - Frontend: Jinja2 + Tailwind (CDN) + HTMX + Alpine.js, UI deutsch - Tests: 28 pytest-Fälle (Loader, Lifecycle, Entry-Points, Migrations- Idempotenz, Login/Logout, Rollen-Zugriff, Benutzerverwaltung) - Docker/Podman: Compose (Traefik-Labels) + Dockerfile (uv) - README.md mit Setup-Anleitung
This commit is contained in:
24
docker-compose.yml
Normal file
24
docker-compose.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
container_name: spiele-redaktion
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- SPIELE_DATABASE_URL=sqlite:///./data/spiele-redaktion.db
|
||||
- SPIELE_SESSION_SECRET=${SPIELE_SESSION_SECRET:-change-me-in-production}
|
||||
# Vor dem ersten Start setzen, sonst wird der Admin mit "admin" angelegt:
|
||||
- SPIELE_INITIAL_ADMIN_PASSWORD=${SPIELE_INITIAL_ADMIN_PASSWORD:-admin}
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
networks:
|
||||
- traefik_default
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.spiele-redaktion.rule=Host(`swen.henry.insight-it.de`)"
|
||||
- "traefik.http.routers.spiele-redaktion.entrypoints=websecure"
|
||||
- "traefik.http.routers.spiele-redaktion.tls.certresolver=le"
|
||||
- "traefik.http.services.spiele-redaktion.loadbalancer.server.port=8000"
|
||||
|
||||
networks:
|
||||
traefik_default:
|
||||
external: true
|
||||
Reference in New Issue
Block a user