sandrodachandClaude Sonnet 5.5 bc13235da6
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 8s
docs: rewrite documentation and README from current codebase, add flaw analysis
Remove outdated claims (CRDT, DocRooms, presence, .md files on disk) and
document the actual architecture, API, permissions and known flaws.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 23:09:05 +01:00
2026-10-24 16:56:44 +02:00
2026-10-24 16:56:44 +02:00

🧠 MindSift

Der Kopf frei in drei Sekunden.

Self-Hosted Docker SQLite

MindSift ist eine selbst gehostete Schaltstelle für spontane Gedanken, Aufgaben mit Kanban-Board, hierarchische Outliner-Notizen und gemeinsame Listen. Alles läuft als ein einzelner Container mit eingebetteter SQLite-Datenbank, auf deinem eigenen Server.

MindSift Triage Desktop

Philosophie • Funktionen • Schnellstart • Betrieb • Entwicklung • Dokumentation


💡 Die Philosophie

Die meisten Notiz- und Aufgaben-Apps verlangen Struktur im falschen Moment: Wenn dir ein Gedanke kommt, willst du keinen Ordner suchen und keine Felder ausfüllen. MindSift trennt deshalb Erfassen und Organisieren:

  1. Abladen: In die Eingabeleiste tippen, Enter, fertig. Wer will, weist den Gedanken gleich einer Aufgabe, Liste oder Notiz zu.
  2. Sichten (Triage): Später gehst du den Stapel Karte für Karte durch: verwerfen, zur Aufgabe machen, in eine Notiz oder Liste verwandeln.
  3. Vertiefen: Aus losen Ideen werden Aufgaben mit Unteraufgaben, vernetzte Outliner-Notizen oder geteilte Listen für Familie und Team.

✨ Funktionen

⚡ Schnellerfassung & Triage

  • Eingabeleiste im Kopf der App, jederzeit mit C oder / fokussierbar; auch per Spracheingabe (Browser-Funktion).
  • Ziel beim Erfassen wählbar: Posteingang, Aufgabe, Listeneintrag oder Notiz.
  • Triage-Deck: H/← verwerfen, L/→ zur Aufgabe, T Aufgabe mit Termin, D in Notiz verwandeln, Leertaste = später. Auf dem Smartphone per Wischgeste.
  • Papierkorb mit Wiederherstellen.

MindSift Mobile Triage

✅ Aufgaben & Kanban

  • Listen- und Kanban-Ansicht, Spalten pro Aufgabenliste frei konfigurierbar.
  • Prioritäten, Fälligkeitsdatum, Hashtags, Unteraufgaben mit Fortschrittsbalken, Markdown-Notizen.
  • Filter, Gruppierung und Sortierung; Drag & Drop in Liste und Board.
  • Aufgabenlisten teilen mit Benutzern oder Gruppen, wahlweise als Bearbeiter oder nur lesend.
  • Alarme bei Fälligkeit per E-Mail, Discord oder eigenem Webhook.

MindSift Aufgaben und Kanban-Board

📝 Workspace: Outliner-Notizen

  • Jeder Gedanke ein Bullet: Enter, Tab/Shift+Tab, Ein-/Ausklappen, Drag & Drop ganzer Äste.
  • Zoom-Fokus per Klick auf den Bullet, Breadcrumbs zum Zurücknavigieren.
  • Blocktypen und Slash-Befehle: /todo, /link, /h1–/h3, /code (mit Syntax-Hervorhebung), /callout, /divider.
  • Wiki-Links [[Notiz]], Links und #Hashtags; Tag-Seiten bündeln alle Fundstellen.
  • Ordner, Favoriten, To-Do-Rollup über alle Notizen und Export einer Notiz als .md.
  • Einfügen von mehrzeiligem Markdown wird in Blöcke zerlegt.
  • Teilen: Notizen und ganze Ordner lassen sich Benutzern oder Gruppen zum Lesen freigeben. Empfänger sortieren sie in ihren eigenen Baum ein.

MindSift Workspace Outliner

🛒 Geteilte Listen

  • Einkaufs-, Pack- und Checklisten mit Kategorien per Hashtag (Hafermilch #Kühlregal), Mengenangaben und Drag & Drop zwischen Kategorien.
  • Freigabe an Benutzer und Gruppen (Bearbeiter oder Leser); abgehakte Einträge erscheinen bei allen in Echtzeit.

MindSift Geteilte Listen

🏢 Benutzer, Gruppen, Administration

  • Geführte Ersteinrichtung, Rollen Admin und Mitglied, Einladungscodes, optional offene Registrierung.
  • Gruppen mit Gruppen-Admins für Freigaben.
  • Admin-Bereich: Benutzer, Einladungen, Instanzname, SMTP, Freigabe-Modus.
  • Vier Themes (Dark, Light, High-Contrast, Soft), installierbar als PWA.

🔌 Integrationen

  • Webhook / API-Key: POST /api/v1/webhooks/ingest legt Aufgaben aus Smarthome, Skripten oder Automationen an.
  • Persönliche API-Keys, Datenexport als JSON.

🚀 Schnellstart

MindSift läuft als einzelner Container mit Webserver, API, Datenbank und Frontend.

Option 1: Installationsskript

curl -fsSL https://git.dsit.me/sandrodach/MindSift/raw/branch/dev/install.sh | bash

Das Skript legt ein Verzeichnis an, lädt docker-compose.yml und .env.example, erzeugt ein JWT_SECRET und startet den Container.

Option 2: Docker Compose

mkdir -p mindsift && cd mindsift
curl -fsSL https://git.dsit.me/sandrodach/MindSift/raw/branch/dev/docker-compose.yml -o docker-compose.yml
curl -fsSL https://git.dsit.me/sandrodach/MindSift/raw/branch/dev/.env.example -o .env
# In .env: JWT_SECRET durch einen langen Zufallswert ersetzen!
docker compose up -d

Minimal:

services:
  mindsift:
    image: git.dsit.me/sandrodach/mindsift:dev
    restart: unless-stopped
    ports: ["8080:8080"]
    volumes: ["./data:/data"]
    environment:
      - JWT_SECRET=hier-ein-langer-zufaelliger-wert
      - BASE_URL=https://mindsift.example.com

Ersteinrichtung

Rufe http://localhost:8080 auf. Beim ersten Start führt ein Assistent durch das Anlegen des Administrator-Kontos.

⚠️ Setze JWT_SECRET. Ohne Angabe nutzt der Server einen öffentlich bekannten Standardwert, mit dem sich Anmelde-Tokens fälschen lassen. Rufe die Instanz außerdem direkt nach dem Start auf, damit kein Fremder das erste Konto anlegt.


⚙️ Betrieb & Konfiguration

Variable Standard Zweck
PORT 8080 HTTP-Port
DATA_DIR /data (Container) Ablage der Datenbank mindsift.db
JWT_SECRET unsicherer Standard Pflicht in Produktion, Signaturschlüssel
BASE_URL http://localhost:8080 Öffentliche URL
ALLOW_REGISTRATION false Offene Registrierung (im Admin-UI änderbar)
LOG_LEVEL / DEBUG info / false Logging
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM, SMTP_TLS leer E-Mail-Alarme (auch im Admin-UI)
MINDA_DEMO false Legt Demo-Konten admin/admin, user/user an. Nie auf öffentlichen Servern!
  • Reverse-Proxy: WebSocket-Upgrade und ungepufferte SSE-Streams müssen durchgereicht werden. Beispiele für Nginx, Traefik, Caddy und Cloudflare: Doku/reverse-proxy.md.
  • Datensicherung: Alle Daten liegen in data/mindsift.db (+ -wal/-shm). Sichere sie mit sqlite3 mindsift.db ".backup 'backup.db'" oder bei gestopptem Container. Zusätzlich gibt es einen JSON-Export pro Benutzer.
  • Updates: Neues Image ziehen und Container neu starten (docker compose pull && docker compose up -d). Das Schema wird beim Start automatisch angepasst.

🛠 Entwicklung

Voraussetzungen: Go 1.23, Node 22.

# Backend: Vet und Tests
go vet ./... && go test ./...

# Frontend
cd frontend
npm ci
npm run dev                # Vite-Entwicklungsserver
npx tsc --noEmit           # Typprüfung
npm run build              # Produktions-Build

Für das Binary wird das gebaute Frontend nach cmd/server/dist kopiert (go:embed); das mehrstufige Dockerfile erledigt das und führt Vet und Tests beim Image-Build aus.

Stack: Go (chi, gorilla/websocket, JWT, modernc SQLite) · React 18, TypeScript, Vite, Tailwind.


📚 Dokumentation

Die technische Doku liegt unter Doku/: Architektur, Datenbank, REST- und Echtzeit-API, Module, Freigaben und Berechtigungen, Themes. Bekannte Schwachstellen und offene Punkte stehen in Doku/flaws.md.


🔒 Deine Daten gehören dir

  • Selbst gehostet, keine Telemetrie, keine Fremddienste. Ausgehende Verbindungen gibt es nur zu den Alarm-Zielen, die du selbst einrichtest (SMTP, Discord, Webhook).
  • Alle Inhalte liegen in einer einzigen SQLite-Datei; Notizen lassen sich als Markdown exportieren, alle Daten eines Benutzers als JSON.

📄 Lizenz

Im Repository liegt derzeit keine LICENSE-Datei; die Lizenz ist damit nicht festgelegt.

Gebaut für Klarheit, Geschwindigkeit und digitale Souveränität.
S
Description
No description provided
Readme
4.3 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 65.9%
Go 31.7%
CSS 1.6%
JavaScript 0.3%
Dockerfile 0.2%
Other 0.3%