🤝 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 MischNAS mittels Docker und Docker Compose.

🚀 Lokale Installation & Entwicklung

Voraussetzungen

  • Node.js (v18 oder neuer)
  • npm oder pnpm

Setup

  1. Installiere die Abhängigkeiten im CRM-Verzeichnis:

    npm install
    
  2. Starte den Server im Entwicklungsmodus (mit automatischem Reload bei Codeänderungen):

    npm run dev
    

    Der 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.db sicher 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:

  1. Der Parser extrahiert den Namen aus dem Dateinamen oder dem Feld Name: unter ## Allgemeines.
  2. Geburtstage im Format DD.MM.YYYY werden automatisch in das Standardformat YYYY-MM-DD konvertiert.
  3. Der Zähler für Ehre (z. B. +32) wird extrahiert und als Startwert festgelegt.
  4. Alle Unterabschnitte werden den entsprechenden Datenbankspalten zugeordnet.
  5. 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)

Gitea Registry Deployment auf MischNAS

MischCRM soll auf der NAS nicht lokal gebaut werden. Der Build laeuft in Gitea Actions und pusht das fertige Image in die lokale Gitea Container Registry:

git.mischlabs.de/mrdiderot/crm:latest

Die NAS zieht dieses Image per Docker Compose. Der universelle Watchtower kann es danach regelmaessig pruefen und bei neuen Images automatisch aktualisieren.

Start und manuelles Update auf der NAS

cd /volume2/docker/mischcrm
git pull --ff-only
docker compose pull
docker compose up -d

Falls docker compose up -d lokal zu bauen beginnt, steht in der Compose noch build: statt image:. Korrekt ist:

image: git.mischlabs.de/mrdiderot/crm:latest

Die SQLite-Daten bleiben ueber ./data:/app/data persistent. Die Datei ./data/crm.db darf nicht ins Git committed werden.

Description
No description provided
Readme 4.1 MiB
Languages
Markdown 100%