sandrodachandClaude Sonnet 5.5 b6c197aba7
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 7s
Merge branch 'dev' into main
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 23:09:40 +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%