# đŸ€ 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: ```bash npm install ``` 2. Starte den Server im Entwicklungsmodus (mit automatischem Reload bei CodeĂ€nderungen): ```bash npm run dev ``` Der Server lĂ€uft nun auf [http://localhost:8085](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: ```bash docker compose up -d ``` Die Anwendung ist anschließend unter **[http://localhost:38090](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*): ```markdown --- 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: ```text 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 ```bash 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: ```yaml 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.