# Papa-Kind-Treff Stand: 2026-07-31 Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale Treffen, Community-Austausch und einen geschützten Mitgliederbereich. ## Produktumfang - lokale Events und Treffen finden - Community/Forum mit Kategorien, Boards, Threads und Antworten - Mitgliederbereich für Profil, optionale Kinderinfos und eigene Termine - Community-Moderation mit Rollenmodell ## Aktueller Stand - Startseite mit Hero, Suche, Event-Karussell, Community-Vorschau und Mitgliederbereichs-Block - Community mit Board-Navigation und separater Thread-Ansicht - Community-Admin-Bereich für Bewerbungen, Meldungen, Rollen und Migration - Impressum, Datenschutz-&-Cookies-Seite und Über-uns - standortbasierte Sortierung für die neuesten Treffen - eigener Einstellungsbereich für Standortfreigabe, Browser-Hinweise und Consent-Verwaltung - modernes Avatar-System mit zentraler Mehr-Style-Architektur auf Basis von DiceBear - aktive Avatar-Styles aktuell: `lorelei` und `croodles`; weitere Styles können über `config/avatar.php` freigeschaltet werden - Profilbild-Generator mit visueller Komponenten-Auswahl, generischem Style-/Seed-/Config-Speichermodell, Style-Wechsel und komponentenbezogenen Farbfeldern pro Style; im Modal bleiben Kopfbereich und Komponentenleiste fixiert, waehrend nur die Variantenliste scrollt - beim Style `croodles` startet die Basisfarbe standardmaessig weiss; der Hintergrund ist standardmaessig leer/ohne Vorgabe - jedes gespeicherte Profilbild wird als lokale Benutzer-SVG unter `public/assets/avatars/users/ptk-.svg` abgelegt - `config/avatar.php` enthaelt jetzt pro Style auch explizite Beispielpaletten, Farbgruppen pro Komponente und Beispielprofile als Einbindungsreferenz - Consent-Manager für Analyse und externe Dienste - Navigation aktuell mit `Home`, `Suche`, `Community` - eingeloggte Nutzer sehen rechts ein Profil-Menü mit Direktlinks zu `Profil`, `Kinder`, `Termine`, `Community`, `Einstellungen` - der Mitgliederbereich ist als Seitenlayout mit linker Bereichsnavigation aufgebaut - im Bereich `Kinder` koennen vorhandene Eintraege jetzt auch nachtraeglich bearbeitet und geloescht werden - bei Kindern mit Geburtsdatum wird das Alter automatisch berechnet und bei Aufruf des Mitgliederbereichs bei Bedarf jaehrlich nachgezogen; ohne Geburtsdatum gilt das manuell gepflegte Alter - sensible Profildaten werden im Mitgliederbereich jetzt konsequent app-seitig verschluesselt gespeichert; bestehende Klartextwerte werden beim Lesen schrittweise in den verschluesselten Zustand ueberfuehrt - auch Konto-E-Mails werden jetzt app-seitig verschluesselt gespeichert; fuer Login, Verifizierung, Passwort-Reset und Dublettenpruefung wird nur ein separater HMAC-Lookup-Hash verwendet - der Hinweis auf die verschluesselte Speicherung personenbezogener Profilangaben ist jetzt auch auf der Datenschutz-Seite deutlich hervorgehoben - das Profil unterstuetzt jetzt eine vollstaendige Adresse mit verschluesselter Strasse/Hausnummer sowie optionaler Adress-Lokalisierung ueber die bereits vorhandenen Karten-/Geocoding-Dienste - bei der Profiladresse gibt es jetzt eine Trefferauswahl fuer Adresssuche, eine Uebernahme aus dem Browser-Standort sowie einen mobilen Hinweisdialog, warum die Adresse fuer lokale Termine relevant ist - Debug-Floating-Button nur für `site_admin` im Debug-Modus ## Technik - Einstieg: `public/index.php` - Templates: `partials/` - App-Logik: `src/App/` - Assets: `public/assets/` - Datenbankschema: `schema.sql` ## Rollen - `forum_admin` - `site_admin` - `owner` Die Rechteverteilung und Community-Logik sind in `src/App/CommunityAccess.php` abgebildet. Die zentrale Avatar-Verwaltung liegt in `src/App/Avatar/AvatarManager.php`. Die aktuell aktiven Styles liegen in `src/App/Avatar/Lorelei.php` und `src/App/Avatar/Croodles.php`. Die Style-/Storage-Konfiguration liegt in `config/avatar.php`. Der direkte Avatar-Endpunkt liegt in `public/api/avatar.php`. Die visuelle Avatar-Auswahl sitzt im Dashboard-Modal in `partials/landing/account/dashboard.php`. Beim Oeffnen des Generators werden nur die Varianten des aktuell aktiven Styles und Tabs geladen; weitere Varianten werden erst beim Wechsel nachgeladen. Farbfelder werden pro Style direkt im Generator gepflegt und zusammen mit Stil und Seed im Profil gespeichert. ## Consent und rechtlich relevante Integrationen Der aktuelle Code nutzt oder kann nutzen: - notwendige Session-/Client-Cookies - Matomo (`analytics`) - Browser-Geolocation (`external_services`) - lokale Standortspeicherung via Cookie, `localStorage`, `sessionStorage` (`external_services`) - Leaflet von `unpkg.com` (`external_services`) - OpenStreetMap Nominatim (`external_services`) - DiceBear fuer serverseitig erzeugte Profilbilder; das Ergebnis wird lokal als Benutzer-SVG gespeichert Zur Datensicherheit: - Passwort-Hashes laufen ueber Argon2id. - Konto-E-Mails werden verschluesselt gespeichert und nur ueber einen separaten HMAC-Lookup-Hash adressiert. - Profilfelder wie Vorname, Nachname, Strasse/Hausnummer, Telefonnummer, Beruf, Sprachen und Kurzvorstellung werden app-seitig verschluesselt gespeichert. - Standortkoordinaten (`lat`, `lng`) bleiben fuer Distanz- und Umkreissuchen technisch im Klartext gespeichert. Wichtig: - Nicht notwendige Analyse- und Drittanbieterfunktionen dürfen erst nach Einwilligung aktiv werden. - Änderungen an Cookies, Tracking oder Drittanbietern müssen immer auch in Consent und rechtlichen Hinweisen nachgezogen werden. ## Dokumentationspflicht bei Änderungen Bei jeder Änderung im Projekt immer mitprüfen und bei Bedarf aktualisieren: - `README.md` - `.projektstructure.txt` - `PROJECT_CONTEXT.md` Zusätzlich bei neuen Cookies, Tracking-Mechanismen oder Drittanbietern: - Consent-Manager anpassen - rechtliche Hinweise/Datenschutztexte ergänzen - technische Opt-in-/Opt-out-Logik prüfen ## Dateien für neue Chats Für spätere Chats als Einstieg besonders wichtig: - `README.md` - `.projektstructure.txt` - `PROJECT_CONTEXT.md`