- 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
20 lines
446 B
Docker
20 lines
446 B
Docker
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
|
|
|
|
WORKDIR /app
|
|
ENV UV_COMPILE_BYTECODE=1 \
|
|
UV_LINK_MODE=copy \
|
|
PYTHONUNBUFFERED=1
|
|
|
|
# Projektdateien (uv.lock vorhanden -> reproduzierbarer Install)
|
|
COPY pyproject.toml uv.lock README.md ./
|
|
COPY src ./src
|
|
COPY plugins ./plugins
|
|
COPY main.py .
|
|
|
|
RUN uv sync --frozen --no-dev
|
|
|
|
EXPOSE 8000
|
|
VOLUME ["/app/data"]
|
|
|
|
CMD ["uv", "run", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|