Files
papa-kind-treff.info/README.md
Lars Gebhardt-Kusche b15bb4cd3a
All checks were successful
Deploy / deploy (push) Successful in 55s
clean up 2
2026-08-21 02:39:16 +02:00

85 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Papa-Kind-Treff Start-Doku
Stand: 2026-08-10
Diese Datei ist die zentrale Start-Doku für neue Chats und den schnellen Projekteinstieg.
## Für neue Chats
Für neue Chats reicht es, zuerst diese Datei zu nennen und lesen zu lassen.
Diese Datei ist der verbindliche Root-Einstieg und verweist auf alle weiteren Pflichtdokumente unter `Internal/`.
Danach muss die kanonische interne Dokumentation unter `Internal/` vollständig geprüft werden.
Verbindliche deutsche Referenz:
- `Internal/de/README.md`
- `Internal/de/PROJECT_CONTEXT.md`
- `Internal/de/PROJECT_STRUCTURE.md`
Parallele englische Referenz:
- `Internal/en/README.md`
- `Internal/en/PROJECT_CONTEXT.md`
- `Internal/en/PROJECT_STRUCTURE.md`
## 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.
## 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
- neue Basis für ein übergreifendes Termin-, Ort- und Veranstaltungssystem
## Wichtige aktuelle Produktregeln
- Primärbegriff im Produkt: `Events`
- `Termine` und `Treffen` ergänzend in SEO- und Erklärungstexten
- Hauptnavigation aktuell: `Home`, `Event Suche`, `Community`
- Das Profilmenü oben rechts trennt klar zwischen `Profil` und dem nur für Berechtigte sichtbaren Punkt `Admin-Einstellungen`.
- Der Profilbereich bündelt persönliche Angaben, Kinder, eigene Events, eigene Orte und Veranstaltungen, Cookie-/Kontoeinstellungen sowie Community-Informationen.
- Der Admin-Bereich bündelt getrennt Profil-Levels, Kategorien, System-Einstellungen sowie die Moderation und Freigabe von Orten und Veranstaltungen.
- Innerhalb des Admin-Bereichs bleiben Freigaben, Community-Moderation, User Management, Profil-Levels und System im selben Dashboard-Layout getrennt; Rollen und System-Levels liegen im User Management, die Community-Migration im System.
- In `Profil-Levels` kann der `SiteOwner` Community-Level pflegen, Benutzer suchen und Community-Punkte manuell mit Begründung erhöhen
- In `Profil-Levels` werden zusätzlich Nutzer angezeigt, die in den letzten 30 Tagen mindestens den Rang `Säule der Väter-Community` erreicht haben
- Im Bereich `Community-Admin` läuft die Rollenvergabe jetzt über eine Benutzersuche statt über rohe Benutzer-IDs; `Site-Admins` bleiben dabei auf die vorhandene Rollenlogik begrenzt
- Kategorien wurden aus `System` in den eigenen Mitgliederbereichspunkt `Kategorien` verschoben; dort werden nur neue Kategorien angezeigt und per Vorschlagsfeld mit bestehenden Kategorien aus der Datenbank zusammengeführt
- Neue Kategorien bleiben im Bereich `Kategorien` sichtbar, bis sie von einem Berechtigten bestätigt oder zusammengeführt werden
- Im Bereich `Kategorien` gibt es zusätzlich eine Suche über bestehende Kategorien, damit sie gezielt gefunden und zusammengeführt werden können
- Beim Zusammenführen wird die nicht zu behaltende Kategorie anschließend vollständig entfernt und die Ansicht danach frisch neu geladen
- Zusammengeführte Kategorien werden zusätzlich intern als Redirect gesperrt, damit Standard-Seed oder spätere Eingaben sie nicht erneut auswählbar machen
- Beim Zusammenführen von Kategorien kann jetzt explizit festgelegt werden, welche der beiden Kategorien erhalten bleibt
- Community-Level können jetzt zusätzlich die Rechte für Kategorien sowie für die Freigabe von Orten und Veranstaltungen tragen
- Bestehende gespeicherte Community-Level erhalten diese beiden Rechte im Fallback automatisch ab 750 Punkten, solange sie nicht explizit anders gespeichert wurden
- neue interne Grundstruktur: `listing_places`, `listings`, `listing_occurrences`, `listing_prices`, `listing_benefits`
- Seiten-Admins haben zusätzlich eine System-Sektion für globale Wartungs- und Diensteschalter
- Im Mitgliederbereich ist `Events` jetzt wieder auf echte eigene Events und Event-Teilnahmen beschränkt
- Orte und sonstige Veranstaltungen laufen jetzt separat unter `Orte & Veranstaltungen`
- Neue Orte und Veranstaltungen müssen vor Veröffentlichung erst durch einen Admin freigegeben werden; Änderungs- und Löschwünsche laufen ebenfalls als begründete Anfrage
- Noch nicht veröffentlichte Orts- und Veranstaltungsvorschläge können im Mitgliederbereich direkt weiterbearbeitet werden; veröffentlichte Einträge laufen für normale Mitglieder weiter über begründete Änderungsanfragen
- `SiteOwner` erbt bei Orts- und Veranstaltungsanfragen vollständig die Freigaberechte von `Forum-Admin`
- Eigene Events unterstützen aktuell optionalen Beschreibungstext, klare Kinderangabe, optionale Platzzahl, Bild-Upload sowie eine Location aus Datenbank oder benutzerdefinierte Adresse
- Bei eigener Event-Location aus der Datenbank werden Adresse und Kategorie nur informativ aus dem gewählten Ort bzw. der gewählten Veranstaltung übernommen und nicht manuell geändert
- Aus dem Formular für eigene Events kann direkt in das Anlegen eines neuen Orts oder einer neuen Veranstaltung verzweigt werden
- Wenn aus einem eigenen Event heraus ein neuer Ort oder eine neue Veranstaltung angelegt wird, kehrt der Ablauf danach wieder in das Event zurück und wählt den neuen Eintrag direkt vor
- Die Eingabe im Mitgliederbereich ist jetzt bewusst vereinfacht: zuerst nur Pflichtangaben, optionale Angaben in einklappbaren Bereichen
- Kategorien werden jetzt über eine Sucheingabe mit bestehenden Vorschlägen gepflegt; neue Kategorien werden automatisch angelegt und sind für Seiten-Admins im Systembereich zusammenführbar
- Im Mitgliederbereich `Events` gibt es jetzt zusätzlich einen ICS-Download und einen persönlichen abonnierbaren Kalender-Feed für alle eigenen Events und Event-Teilnahmen
- Der Bereich `Events` ist im Mitgliederbereich jetzt zusätzlich in die Tabs `Meine Events`, `Kalendersynchronisation` und `Abgelaufene Events` gegliedert
- Vorschläge für neue Orte und Veranstaltungen werden schon vor der Freigabe als mögliche Ortsauswahl für Events berücksichtigt, solange sie nicht abgelehnt oder archiviert wurden
- Für später vorgemerkt: direkte Kalender-Anbindung großer Anbieter wie Google und Microsoft/Outlook per OAuth, zusätzlich zum bestehenden ICS-Feed
- Interne Projektdateien und das Datenbankschema liegen nicht mehr im Root, sondern unter `Internal/`
## 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
- persönliche Kalender-Feed-Tokens werden verschlüsselt gespeichert und zusätzlich über einen separaten SHA-256-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
## Hinweis zur internen Ablage
- Endnutzertexte, Landingpages und UI gehören nicht nach `Internal/`
- `Internal/` ist ausschließlich für interne Projekt- und Systemdokumentation gedacht
- Das Datenbankschema liegt unter `Internal/db/schema.sql`
- Alte frühere Root-Dokumente wurden nach `Internal/archive/legacy-root-files/` verschoben