Papa-Kind-Treff – Projektstruktur und Pflegehinweise
Stand: 2026-07-24

1. Zweck
- Plattform für Väter mit Fokus auf lokale Treffen, Community/Forum, Mitgliederbereich und spätere Liveschaltung.
- Sprache und Tonalität im Frontend: freundlich, direkt, nutzerzentriert.

2. Zentrale Einstiegspunkte
- `public/index.php`
  Front-Controller, Routing auf `public/page/*`, Staging-Basic-Auth, Layout-Steuerung.
- `partials/structure/layout_start.php`
  Globale Assets, Body-Datasets, Consent-UI, Navigation, globale Modale.
- `partials/structure/layout_end.php`
  Footer und Footer-Assets.

3. Wichtige Verzeichnisse
- `public/page/`
  Route-Dateien.
  Wichtige Seiten:
  - `index.php` Startseite
  - `search.php` Suche
  - `community.php` Community-Übersicht
  - `community_thread.php` Thread-Ansicht
  - `dashboard.php` Mitgliederbereich
  - `community-admin.php` Moderation/Admin
  - `impressum.php`, `datenschutz.php`, `ueber-uns.php`
  - `api/location-preference.php` API zum Speichern der Standortpräferenz
- `partials/landing/main/`
  Startseiten-Blöcke.
- `partials/landing/community/`
  Community-Templates inkl. Sidebar-Navigation.
- `partials/landing/account/`
  Dashboard, Community-Admin, Login/Register.
- `partials/structure/`
  Layout, Navigation, Footer, Matomo-Konfiguration.
- `src/App/`
  Geschäftslogik und Services.

4. Relevante App-Klassen
- `src/App/AccountPages.php`
  Dashboard-/Profil-Logik, Event-Anlage, Community-Bewerbung, Migration.
- `src/App/Community.php`
  Boards, Threads, Posts, Forenstruktur, Punkte.
- `src/App/CommunityAccess.php`
  Rollen, Bewerbungen, Meldungen, Moderation, Restrictions.
- `src/App/CommunityMigration.php`
  DB-Erweiterungen für Community-Funktionen.
- `src/App/ProfileSettings.php`
  Persistente Profileinstellungen für Standortfreigabe und Avatar-Merkmale.
- `src/App/Avatar.php`
  Avatar-Presets, Asset-Pfade und Rendering im modernen Portrait-Stil.
- `src/App/Search.php`
  Eventsuche inkl. Distanzfilter.

5. Frontend-Assets
- `public/assets/js/app.js`
  Globale UI-Logik, Slider, Geolocation, Consent-Manager, Matomo-Opt-in.
- `public/assets/css/app.css`
  Globales UI-Styling inkl. Community, Footer, Consent.
- `public/assets/css/styles.css`
  Basis-Styles.

6. Aktueller Funktionsstand
- Startseite mit Hero, Suche, neueste Treffen, Community-Vorschau, Mitgliederbereich.
- Hauptnavigation aktuell reduziert auf `Home`, `Suche`, `Community`.
- Für eingeloggte Nutzer gibt es rechts ein Profil-Dropdown mit Direktlinks zu `Profil`, `Kinder`, `Termine`, `Community`, `Einstellungen`, `Abmelden`.
- Kein eigener Top-Level-Punkt `Termine`; Event-Fokus liegt derzeit auf Startseite und Suche.
- Community mit Kategorien, Boards, Thread-Liste, Thread-Ansicht, Rollen-/Moderationslogik.
- Mitgliederbereich als Bereichslayout mit linker Navigation und separaten Seiten für Profil, Kinder, Termine, Community und Einstellungen.
- Profilbereich mit moderner Avatar-Preset-Auswahl auf Basis echter Portrait-Assets.
- Community-Admin-Bereich für Bewerbungen, Meldungen, Rollen und Migration.
- Impressum, Datenschutz-&-Cookies-Seite und Über-uns vorhanden.
- Standortsortierung auf der Startseite für Treffen in der Nähe.
- Standortpräferenz im Einstellungsbereich:
  - `disabled`
  - `prompt`
  - `enabled`
- Im Einstellungsbereich stehen zusätzlich Browser-Hinweise zur Standortfreigabe sowie der Einstieg in die Consent-Verwaltung.
- Consent-Manager:
  - notwendige Cookies immer aktiv
  - `analytics` für Matomo
  - `external_services` für Standort/Karten/Leaflet/Nominatim

7. Rollenmodell Community
- normaler Nutzer
  - schreiben, antworten, bewerten, melden
- `forum_admin`
  - Themen/Beiträge bearbeiten und löschen
  - Meldungen prüfen
  - Community-Schreibsperren setzen
- `site_admin`
  - alles wie `forum_admin`
  - Bewerbungen prüfen
  - Community-Migration
- `owner`
  - alles wie `site_admin`
  - Rollen vergeben/entziehen

8. Externe Dienste und rechtlich relevante Punkte
- Matomo (`matomo.my-statistics.info`) nur nach Consent `analytics`.
- Leaflet via `unpkg.com` nur nach Consent `external_services`.
- OpenStreetMap Nominatim für Geocoding/Reverse-Geocoding nur nach Consent `external_services` bei Browserfunktionen.
- Browser-Geolocation und lokale Standortspeicherung nur nach Consent `external_services` und zusätzlicher Standortpräferenz.
- Jede neue Einbindung von Cookies, LocalStorage, SessionStorage, Tracking, externen Skripten, APIs oder Drittanbietern muss:
  - technisch im Consent-Manager berücksichtigt werden
  - in `README.md` dokumentiert werden
  - in dieser Datei vermerkt werden
  - in den rechtlich notwendigen Hinweisen/Datenschutztexten ergänzt werden

9. Pflicht bei zukünftigen Änderungen
- Bei jeder funktionalen Änderung immer mitprüfen und bei Bedarf aktualisieren:
  - `README.md`
  - `.projectstructure.txt`
  - `PROJECT_CONTEXT.md`
- Bei neuen Cookies, Tracking-Mechanismen oder Drittanbietern zusätzlich:
  - Consent-Logik anpassen
  - rechtliche Texte/Hinweise ergänzen
  - Opt-in/Opt-out technisch verifizieren
- Änderungen an Navigation, Nutzerführung oder Rollenanzeige ebenfalls in dieser Datei, `README.md` und `PROJECT_CONTEXT.md` mitführen.
