Files
grok-bot 57fce463cd chore: add mise toolchain for local Quellenatlas development
Pin Python 3.12, Node 22 and uv; add tasks for setup, dev, ingest and tests.
2026-08-21 22:46:27 +02:00

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

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

  1. Block in data/sources.yaml (siehe docs/adding-sources.md).
  2. python -m app.cli sync-sources
  3. 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.