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:
loreleiundcroodles; weitere Styles können überconfig/avatar.phpfreigeschaltet 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
croodlesstartet 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-<userId>.svgabgelegt config/avatar.phpenthaelt 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
Kinderkoennen 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
- der Profil-Editor im Mitgliederbereich ist jetzt kompakter gruppiert, nutzt ausklappbare Abschnitte und enthaelt die bearbeitbare Konto-E-Mail wieder direkt im Formular
- die Profil-Zusammenfassung oberhalb des Editors laeuft aktuell als bewusst leicht rueckbaubare kompakte Zwischenvariante mit klarer Umschaltstelle direkt im Template
- Debug-Floating-Button nur für
site_adminim Debug-Modus
Technik
- Einstieg:
public/index.php - Templates:
partials/ - App-Logik:
src/App/ - Assets:
public/assets/ - Datenbankschema:
schema.sql
Rollen
forum_adminsite_adminowner
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.txtPROJECT_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.txtPROJECT_CONTEXT.md