🤝 MischCRM - Personal Relationship Manager
Willkommen bei MischCRM, deinem eleganten, privaten und vollautomatisierten Beziehungsmanager (Personal CRM). Diese Anwendung wurde entwickelt, um lose Textnotizen (z. B. aus Obsidian) durch eine intuitive, saubere Web-Oberfläche zu ersetzen, mit der du deine Freundschaften, gemeinsamen Treffen, offenen Gesprächsthemen und Meilensteine mühelos verwalten kannst.
Das gesamte System läuft vollständig lokal und privat ohne externe Tracker oder Cloud-Dienste auf deinem Server (z. B. MischNAS).
✨ Features
- Premium Glassmorphism Dark Theme: Ein luxuriöses, modernes Interface mit Outfits-Schriftart, Radial-Glows, Unschärfe-Effekten (
backdrop-filter) und flüssigen Mikro-Animationen. - Interaktives Ehre-Rating: Ein dynamisches Ehre-Zähler-Modul (+/- Buttons) direkt auf den Profilkarten und im Detailbereich mit spürbarem UI-Feedback.
- Schnell-Log für Treffen: Trage mit wenigen Klicks Treffen direkt vom Dashboard oder aus einem Freundesprofil ein (Aktivität, Stimmung/Vibe, detaillierte Gesprächsnotizen).
- "Lange nicht gesehen"-Warner: Eine automatische Liste auf dem Dashboard, die Freunde nach dem Datum des letzten Treffens sortiert und dich warnt, wenn du dich länger nicht gemeldet hast.
- Geburtstags-Tabelle: Zeigt anstehende Geburtstage in den nächsten 30 Tagen an, berechnet die Tage bis zum Geburtstag und das neue Lebensalter.
- Dinge zum Ansprechen (Gesprächsthemen-Checkliste): Verwalte offene Fragen, D&D-Ideen oder Themen für das nächste Treffen direkt auf dem Profil des Freundes.
- Obsidian Markdown Import: Ein intelligenter Parser, der Obsidian
.md-Notizen einliest, YAML-Frontmatter und Überschriften analysiert und die Profildaten direkt in die SQLite-Datenbank überführt. - Dockerized Deployment: Perfekt vorbereitet für das einfache Hosting auf deinem
MischNASmittels Docker und Docker Compose.
🚀 Lokale Installation & Entwicklung
Voraussetzungen
- Node.js (v18 oder neuer)
- npm oder pnpm
Setup
-
Installiere die Abhängigkeiten im CRM-Verzeichnis:
npm install -
Starte den Server im Entwicklungsmodus (mit automatischem Reload bei Codeänderungen):
npm run devDer Server läuft nun auf http://localhost:8085.
🐳 Bereitstellung mit Docker (MischNAS)
MischCRM lässt sich mit einem einzigen Befehl per Docker Compose deployen.
Starten
Führe folgenden Befehl im Verzeichnis aus, in dem sich die docker-compose.yml befindet:
docker compose up -d
Die Anwendung ist anschließend unter http://localhost:38090 erreichbar (Port 38090 auf dem Host wird auf Port 8085 im Container weitergeleitet).
💾 Daten-Persistenz & Backups
Das CRM verwendet SQLite zur Datenhaltung. Die Datenbankdatei crm.db wird im Host-Ordner ./data/ abgelegt, welcher in den Container gemountet wird (/app/data).
- Kein Datenverlust: Selbst wenn der Container gelöscht, geupdatet oder neu gebaut wird, bleiben alle deine Freunde, Treffen und Notizen in
./data/crm.dbsicher auf deinem Host-System gespeichert. - Einfache Backups: Sichere einfach die Datei
./data/crm.db, um ein vollständiges Backup deines CRMs zu erstellen.
📂 Obsidian Import Guide
Du kannst bestehende Markdown-Notizen aus deinem Obsidian-Vault direkt in MischCRM importieren. Kopiere dazu einfach den gesamten Text der Notiz in das Feld unter dem Tab Obsidian Import.
Unterstützte Markdown-Struktur:
Der Parser ist optimiert auf folgende Struktur (siehe z. B. dein Notizenformat für Aaron Lingel):
---
tags:
- Freund
---
## Allgemeines
- Name: Aaron Lingel
- Geburtstag: 13.08.1999
- Kontakt: +49 172 1821612
- Wohnort: Am schlaggraben 18, 71272 renningen
- Beziehungsstatus: FOREVER ALONE (aber hat mich)
- Familie: Mama Lingel und Papa Africano
- Ehre: +32
## Aktuelle Lebenssituation
- Arbeit/Studium: Studium / Arbeit
- Hobbys/Interessen: Ehrenbruder sein, D&D, Gaming
Auf der Suche nach neuen Abenteuern.
## Persönliche Meilensteine
- Hat ein stabiles Freundschaftsprofil bekommen
- Neue Wohnung bezogen
## Random Infos
- Lieblingsessen/-getränk: Pizza, Kaltgetränke
- Sonstige Infos: Bester Kumpel. Immer am Start.
So funktioniert der Import:
- Der Parser extrahiert den Namen aus dem Dateinamen oder dem Feld
Name:unter## Allgemeines. - Geburtstage im Format
DD.MM.YYYYwerden automatisch in das StandardformatYYYY-MM-DDkonvertiert. - Der Zähler für Ehre (z. B.
+32) wird extrahiert und als Startwert festgelegt. - Alle Unterabschnitte werden den entsprechenden Datenbankspalten zugeordnet.
- Nach dem Import kannst du direkt per Klick auf das neu erstellte CRM-Profil springen!
🛠️ Technologien
- Backend: Node.js, Express.js, SQLite (
sqlite3) - Frontend: Vanilla HTML5, CSS3 (luxuriöse HSL-Variablen, Backdrop-Filter), Vanilla JavaScript (SPA, state-driven rendering)
- Icons: Lucide Icons (per CDN geladen)