Pin Python 3.12, Node 22 and uv; add tasks for setup, dev, ingest and tests.
Quellenatlas
Private, selbst gehostete Knowledge Base für quellenbasierte Dokumentation politischer und gesellschaftlicher Auffälligkeiten. Kein öffentliches Portal, kein Meinungsprodukt.
Jeder Claim braucht mindestens eine Quelle. Status (confirmed / allegation / refuted / ongoing) und disputed sind Pflichtfelder. Ursula von der Leyen und Ukraine sind Sorgfalts-Cluster, keine Schuldzuschreibung.
Schnellstart
Voraussetzung lokal: mise und Docker (für PostgreSQL).
cp .env.example .env # Werte anpassen, vor allem JWT_SECRET und ADMIN_PASSWORD
mise trust # einmalig
mise install # Python 3.12, Node 22, uv; danach hook: mise run install
mise run setup # Postgres :5433, Migrate, Admin, Quellen, Seed
mise run dev # API :8000 + UI :3000
- UI: http://localhost:3000
- API: http://localhost:8000/docs
- Login:
ADMIN_USERNAME/ADMIN_PASSWORD(Defaultadmin/changeme)
Häufige Tasks: mise tasks — u. a. test, seed, sync, ingest, backend, frontend.
Postgres-Port lokal 5433 (5432 ist oft schon belegt). Compose intern weiter 5432.
Nur Docker (Backend und Frontend im Compose-Stack):
cp .env.example .env
docker compose up --build
Was das System tut
| Teil | Rolle |
|---|---|
| PostgreSQL | Primärspeicher, Hierarchien, Volltext, Graph als SQL-Sicht |
| FastAPI | Auth (httpOnly-Cookie), CRUD, Suche, Export, Review, Ingest |
| Next.js | Hierarchische Navigation, Cluster, Fallseiten mit Zitaten |
data/sources.yaml |
Kanonischer Quellenkatalog |
data/seed/ |
Jurisdiktionen, Kategorien, Entitäten, Fälle, Zusagen |
Ingest holt nur RSS/API, schreibt SourceEntry + ReviewItem, niemals Fälle.
Dokumentation
Quelle erweitern
- Block in
data/sources.yaml(siehedocs/adding-sources.md). python -m app.cli sync-sources- Optional live:
python -m app.cli ingest --slug <slug>
Kein HTML-Scraping von Nachrichtenportalen.
Fall hinzufügen
Im UI unter /admin/cases/new oder als YAML (data/seed/cases/_template.yaml + data/seed/cases.yaml). Danach python -m app.cli seed (idempotent).
Pflicht: mindestens ein Claim mit URL und accessed_at. confirmed nur mit Amts-/Gerichts-/Parlamentsquelle oder confirmation_basis.
Tests
mise run test
Benötigt Docker-Postgres auf localhost:5433 (mise run postgres).
Export
Fallseite → „Markdown exportieren“, oder:
GET /api/v1/export/cases/{slug}?format=json|csv|md
Grenzen von v1
Kein öffentlicher Zugriff, kein LLM, kein Medien-HTML-Crawler, kein Neo4j.