2.8 KiB
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.