Lars Gebhardt-Kusche 0197ad93d8
All checks were successful
Deploy / deploy (push) Successful in 1m0s
search and seo
2026-08-03 21:46:39 +02:00
2026-07-16 01:21:29 +02:00
2026-07-16 01:21:29 +02:00
2026-07-29 21:46:16 +02:00
2026-07-16 01:21:29 +02:00
2026-08-03 21:46:39 +02:00
2026-07-31 22:12:18 +02:00
2026-07-31 21:45:19 +02:00
2026-07-16 01:21:29 +02:00
2026-07-16 01:21:29 +02:00
2026-07-24 21:28:35 +02:00
2026-08-03 21:39:32 +02:00
2026-08-03 21:39:32 +02:00
2026-08-03 21:39:32 +02:00
2026-07-31 21:33:04 +02:00

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-<userId>.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, Event 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
  • der Profil-Editor im Mitgliederbereich ist jetzt kompakter gruppiert, nutzt ausklappbare Abschnitte und enthaelt die bearbeitbare Konto-E-Mail wieder direkt im Formular
  • 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.

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
Description
No description provided
Readme 26 MiB
Languages
PHP 86.4%
CSS 7.1%
JavaScript 3.3%
HTML 3.2%