Files
MindSift/Doku
sandrodachandClaude Opus 5.5 08d9b2dc77
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m13s
feat(workspace): allow sharing notes and shared folders as editor
The share dialog for notes and shared folders now offers "Bearbeiten" and
"Nur Lesen" and stores write/read accordingly. Editors already edit through
the sync engine since phase 2.

Adds e2e/share.e2e.mjs: shares a note as editor through the dialog and checks
that the recipient can edit it; e2e/run.sh runs both browser tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:40:22 +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/lists.md Geteilte Listen
sharing-and-permissions.md Rollen, Gruppen, Freigaben
reverse-proxy.md Nginx, Traefik, Caddy, Cloudflare
theming.md Themes und Design-Variablen
flaws.md Bekannte Schwachstellen und technische Schulden
plans/kollaboration-notizen.md Plan: gemeinsames Bearbeiten von Notizen

Ü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

# 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.