This commit is contained in:
121
README.md
121
README.md
@@ -1,96 +1,45 @@
|
||||
# Papa-Kind-Treff
|
||||
# Papa-Kind-Treff – Start-Doku
|
||||
|
||||
Stand: 2026-07-31
|
||||
Stand: 2026-08-03
|
||||
|
||||
Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf lokale Events, Termine und Treffen, Community-Austausch und einen geschützten Mitgliederbereich.
|
||||
Diese Datei ist die zentrale Start-Doku für neue Chats und den schnellen Projekteinstieg.
|
||||
|
||||
## Produktumfang
|
||||
- lokale Events, Termine und Treffen finden
|
||||
- Community/Forum mit Kategorien, Boards, Threads und Antworten
|
||||
- Mitgliederbereich für Profil, optionale Kinderinfos und eigene Events
|
||||
- Community-Moderation mit Rollenmodell
|
||||
## Für neue Chats
|
||||
Bitte immer zuerst diese Datei lesen und danach die kanonische interne Dokumentation unter `Internal/` vollständig prüfen.
|
||||
|
||||
## 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 Events
|
||||
- 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`, `Events`, `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 Events, Termine und Treffen 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
|
||||
Verbindliche deutsche Referenz:
|
||||
- `Internal/de/README.md`
|
||||
- `Internal/de/PROJECT_CONTEXT.md`
|
||||
- `Internal/de/PROJECT_STRUCTURE.md`
|
||||
|
||||
## Technik
|
||||
- Einstieg: `public/index.php`
|
||||
- Templates: `partials/`
|
||||
- App-Logik: `src/App/`
|
||||
- Assets: `public/assets/`
|
||||
- Datenbankschema: `schema.sql`
|
||||
Parallele englische Referenz:
|
||||
- `Internal/en/README.md`
|
||||
- `Internal/en/PROJECT_CONTEXT.md`
|
||||
- `Internal/en/PROJECT_STRUCTURE.md`
|
||||
|
||||
## Rollen
|
||||
- `forum_admin`
|
||||
- `site_admin`
|
||||
- `owner`
|
||||
## Dokumentationsregel
|
||||
- Die Dokumentation unter `Internal/de/` und `Internal/en/` ist vollständig parallel zu pflegen.
|
||||
- Änderungen an Projektstand, Struktur, Wording, Datenschutz, Sicherheit oder Produktverhalten müssen immer in Deutsch und Englisch nachgezogen werden.
|
||||
- Die Root-`README.md` bleibt bewusst im Hauptordner, damit sie in neuen Chats direkt als Einstieg genannt werden kann.
|
||||
|
||||
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.
|
||||
## Kurzüberblick Projekt
|
||||
Papa-Kind-Treff ist eine PHP-basierte Plattform für Väter mit Fokus auf:
|
||||
- lokale Events, Termine und Treffen
|
||||
- Community-Austausch
|
||||
- geschützten Mitgliederbereich mit Profil, Kinderinfos und eigenen Events
|
||||
|
||||
## 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
|
||||
## Wichtige aktuelle Produktregeln
|
||||
- Primärbegriff im Produkt: `Events`
|
||||
- `Termine` und `Treffen` ergänzend in SEO- und Erklärungstexten
|
||||
- Hauptnavigation aktuell: `Home`, `Event Suche`, `Community`
|
||||
- Profil-Menü aktuell: `Profil`, `Kinder`, `Events`, `Community`, `Einstellungen`, `Abmelden`
|
||||
|
||||
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.
|
||||
## Datenschutz und Sicherheit
|
||||
- sensible Profilfelder werden app-seitig verschlüsselt gespeichert
|
||||
- Konto-E-Mails werden verschlüsselt gespeichert und zusätzlich über einen separaten HMAC-Lookup-Hash adressiert
|
||||
- Standortkoordinaten bleiben technisch im Klartext, soweit sie für Distanz- und Umkreissuchen erforderlich sind
|
||||
- Änderungen an Cookies, LocalStorage, SessionStorage, Geolocation, Tracking oder Drittanbietern erfordern immer auch die Prüfung und Aktualisierung von Consent und rechtlichen Hinweisen
|
||||
|
||||
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`
|
||||
## Hinweis zur internen Ablage
|
||||
- Endnutzertexte, Landingpages und UI gehören nicht nach `Internal/`
|
||||
- `Internal/` ist ausschließlich für interne Projekt- und Systemdokumentation gedacht
|
||||
|
||||
Reference in New Issue
Block a user