Files
MindSift/Doku
sandrodachandClaude Fable 5.1 8faed7a160
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m19s
feat(mcp): MCP server for AI agents, agent scopes on API keys, switches in settings
MindSift now speaks MCP (Streamable HTTP, stateless JSON-RPC) at POST /api/v1/mcp so
Claude Code, Codex, Claude Desktop, Cursor and custom agents can read, create and
complete tasks and keep shared lists. API keys get the scopes tasks:read/write and
lists:read/write; tools/list only shows what the key may call and every tool checks
its scope. Task and list write paths are shared helpers (updateTask, createTask,
addListItem, setListItemDone) used by REST and MCP alike.

Settings: scope selection and the SectionPicker (import, restore) use ToggleSwitch
rows instead of checkbox-like buttons; new MCP section with connection snippets for
Claude Code, Codex and JSON configs. Docs, README, help and changelog updated; v0.28.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-31 21:58:44 +01:00
..

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.

Inhalt

Dokument Inhalt
architecture.md Aufbau, Technologie-Stack, Start, Konfiguration, Build
database.md SQLite-Schema, Migrationen, Datenmodell
api/rest.md Alle REST-Endpunkte
api/websocket.md Echtzeit über WebSocket und SSE, Ereignisse
modules/triage.md Schnellerfassung und Triage
modules/tasks.md Aufgaben, Kanban, Alarme
modules/workspace.md Outliner-Notizen, Ordner, Tags
modules/collaboration.md Gemeinsames Bearbeiten von Notizen: Log, Sperren, Konflikte, Offline, Transport-Stufen
modules/lists.md Geteilte Listen
sharing-and-permissions.md Rollen, Gruppen, Freigaben
reverse-proxy.md Nginx, Traefik, Caddy, Cloudflare
theming.md Themes und Design-Variablen
ui-patterns.md Einheitliche Bedienelemente: Personensuche, Profilbild-Stapel, Zähler
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 (WebSocket, SSE als Ersatz). Verteilt werden Ereignisse nach Änderungen.
  • Notizen gemeinsam bearbeiten: server-autoritatives Operations-Log mit Versionen und Sperren pro Bullet, Konfliktkopien statt Überschreiben, Offline-Warteschlange in IndexedDB, Abgleich auch hinter restriktiven Proxys (modules/collaboration.md).
  • Auth: JWT (HS256) mit serverseitiger Sitzung (sessions, gleitend 30 Tage) und token_version, dazu API-Keys (mindsift_sec_…) für Webhooks.
  • Freigaben: Aufgabenlisten, geteilte Listen, Notizen und Ordner jeweils mit Rolle Bearbeiter oder Leser.

Entwickeln

# Backend (Go 1.23)
go vet ./... && go test ./...

# Frontend (Node 22)
cd frontend && npm ci && npx tsc --noEmit && npm run test:run && 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.