# MindSift Technische Dokumentation Referenz für Entwickler und Administratoren. Alle Angaben wurden gegen den Code im Branch `dev` geprüft (Stand Oktober 2026). Abweichungen zwischen Doku und Code melde bitte als Fehler in [flaws.md](flaws.md). ## Inhalt | Dokument | Inhalt | |---|---| | [architecture.md](architecture.md) | Aufbau, Technologie-Stack, Start, Konfiguration, Build | | [database.md](database.md) | SQLite-Schema, Migrationen, Datenmodell | | [api/rest.md](api/rest.md) | Alle REST-Endpunkte | | [api/websocket.md](api/websocket.md) | Echtzeit über WebSocket und SSE, Ereignisse | | [modules/triage.md](modules/triage.md) | Schnellerfassung und Triage | | [modules/tasks.md](modules/tasks.md) | Aufgaben, Kanban, Alarme | | [modules/workspace.md](modules/workspace.md) | Outliner-Notizen, Ordner, Tags | | [modules/lists.md](modules/lists.md) | Geteilte Listen | | [sharing-and-permissions.md](sharing-and-permissions.md) | Rollen, Gruppen, Freigaben | | [reverse-proxy.md](reverse-proxy.md) | Nginx, Traefik, Caddy, Cloudflare | | [theming.md](theming.md) | Themes und Design-Variablen | | [flaws.md](flaws.md) | Bekannte Schwachstellen und technische Schulden | ## Überblick in 60 Sekunden - **Ein Go-Binary** liefert REST-API, WebSocket/SSE und das eingebettete React-Frontend (`go:embed`). Es gibt genau einen Container und eine SQLite-Datei (`/data/mindsift.db`). - **Datenhaltung:** vollständig in SQLite. Es gibt keine `.md`-Dateien auf der Platte; Markdown wird bei Bedarf aus den Blöcken erzeugt (`documents.markdown_cache`, Export als `.md`). - **Echtzeit:** ein Hub mit Räumen und Benutzer-Kanälen. Verteilt werden Ereignisse nach REST-Änderungen. Es gibt keine CRDTs, Sperren oder Cursor-Presence. - **Auth:** JWT (HS256, 30 Tage) mit `token_version` und Sperrliste, dazu API-Keys (`mindsift_sec_…`) für Webhooks. - **Freigaben:** Aufgabenlisten und geteilte Listen mit Rolle Bearbeiter oder Leser, Notizen und Ordner nur lesend. ## Entwickeln ```bash # Backend (Go 1.23) go vet ./... && go test ./... # Frontend (Node 22) cd frontend && npm ci && npx tsc --noEmit && npm run build ``` Das Frontend wird für das Binary nach `cmd/server/dist` gebaut (siehe `Dockerfile`). Die CI läuft unter `.gitea/workflows/build-and-publish.yaml`.