Files
CRM/README.md

5.0 KiB

🤝 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)