# 📖 Freundesbuch (digital) Ein selbst gehostetes, digitales Freundschaftsbuch. Kein Benutzer-System – nur ein Admin-Passwort für dich, und pro Freund ein frei wählbares Freigabe-Passwort zum Teilen. ## Funktionen - **Ein Passwort** für den Admin-Bereich (als SHA-256-Hash in `docker-compose.yml`, kein Klartext). - Freunde anlegen – jeder Freund ist ein eigener Ordner auf dem Server (`Name-zufallsID`). - Jeder Freund hat ein **Profilbild** und einen **Steckbrief** (klassische Freundebuch-Felder). - Beliebig viele **Blöcke** pro Freund: 🖼️ Bild, 📝 Text, 🎙️ Audio (MP3 o. ä.) – alles wird im jeweiligen Freundes-Ordner gespeichert. - **Freigabe-Link**: Für jeden Freund kannst du einen Link mit eigenem Passwort erzeugen. Damit kann sich der Freund **nur** in seine eigene Seite einloggen und dort Inhalte hinzufügen/bearbeiten. Die Freigabe kannst du jederzeit als Admin beenden. - **Freundesbuch-Ansicht**: verspieltes Scrapbook-Layout mit schräg angeordneten Polaroid-Fotos, Washi-Tape-Optik usw. – seitenweise durchblätterbar. - **PDF-Export** des gesamten Freundesbuchs (serverseitig über Puppeteer/Chromium gerendert). ## Setup 1. **Admin-Passwort festlegen** – Hash erzeugen: ```bash echo -n "DeinPasswort" | sha256sum ``` (macOS: `shasum -a 256`, Windows/PowerShell: `certutil -hashfile datei.txt SHA256` oder ein Online-Tool deines Vertrauens – wichtig ist nur SHA-256 in Kleinbuchstaben-Hex.) Den Hash in `docker-compose.yml` bei `ADMIN_PASSWORD_HASH` eintragen. ⚠️ Der mitgelieferte Standard-Hash entspricht dem Passwort `aendern123` – bitte vor dem Livegang unbedingt ändern! 2. **Session-Secret ändern** – `SESSION_SECRET` in `docker-compose.yml` durch eine lange, zufällige Zeichenkette ersetzen (z. B. `openssl rand -hex 32`). 3. **Starten**: ```bash docker compose up -d --build ``` Die Anwendung läuft danach auf `http://:3000`. 4. Alle Daten (Freunde-Ordner, Fotos, Texte, Audios) landen im lokalen Ordner `./data`, der als Volume eingebunden ist – so bleiben sie auch bei Container-Updates erhalten. ## Nutzung - **/** – Login mit dem Admin-Passwort. - **/admin** – Übersicht: Freunde anlegen, bearbeiten, Freigabe verwalten, löschen. - **/friend/\** – Freund bearbeiten (Profilbild, Steckbrief, Blöcke) – für dich als Admin. - **/share/\** – der Link, den du deinem Freund gibst. Er meldet sich mit dem von dir vergebenen Freigabe-Passwort an und kann **nur** dort etwas eintragen. - **/book** – die verspielte Freundesbuch-Ansicht mit Blätterfunktion und PDF-Export (Button oben rechts). ## Hinweise - Ordnerstruktur pro Freund: `data/friends/-/` mit `meta.json` (Steckbrief, Blöcke, Freigabe-Status) und Unterordner `uploads/` für Fotos/Audios. - Erlaubte Upload-Typen: Bilder (jpg, png, gif, webp) und Audio (mp3, wav, ogg, m4a), maximal 40 MB pro Datei. - Der PDF-Export rendert das Buch serverseitig mit Chromium (im Docker-Image enthalten) – dafür braucht der Container etwas RAM (mind. 512 MB empfohlen). - Es gibt bewusst **keine** Benutzernamen oder E-Mail-Adressen – nur Passwörter.