7.9 KiB
7.9 KiB
Papa-Kind-Treff – Project Context
Updated: 2026-08-07
Summary
Papa-Kind-Treff is a PHP-based platform for fathers. Core areas are local events, appointments, and meetups, a community forum, member profiles with optional child information, and a moderation/admin area.
Key Product Decisions
- Main navigation remains intentionally compact:
Home,Event Search,Community. Eventsis the primary product term across the UI.- Secondary wording is used only in SEO and explanatory copy.
- The community is hierarchical: categories -> boards -> threads -> posts.
- Moderation is separated from the normal community frontend.
- Location features are important for local discovery.
- The existing
eventslogic remains active for now, but future growth should move toward a broader listing, place, and occurrence model. - Site admins get a dedicated system section for global operating and service flags.
Account / Member Area
- The top-right profile menu only contains
Profile,Admin Settingsfor authorized users, andLogout. - The profile area contains personal information, children, own events, own places and event-style entries, cookie/account settings, and community information.
- The admin area is separated from the profile area and contains, depending on permissions, profile levels, categories, system settings, community moderation, and listing approvals.
- Existing direct links to
Categories,Profile Levels, andSystemare automatically assigned to the admin area. - Children can be created, edited, and deleted.
- If a birth date is set, age is calculated automatically and updated later when needed.
- Account email is encrypted application-side and addressed through a separate HMAC lookup hash.
- Profile address can be completed via address search or browser-based location import.
- The
Eventsarea is limited again to real own events and event participations. - The
Eventsarea now also provides a manual ICS export and a personal subscribable calendar feed for all own events and event participations. - The
Eventsarea is now separated in the UI intoMy Events,Calendar Sync, andExpired Eventsso that active events, calendar tasks, and past items stay clearly separated. - Inside
My Events, theCreate New Eventbutton now lives directly in the upper tab row; the previous participation box is now labeledRegistered Eventsand also includes a direct link toEvent Search. - Places and event-like entries were moved for now into a separate member-area section
Places & Events. - Inside
Places & Events, users can create permanent places and time-limited event-style entries. - New places and event-style entries stay in a pending state until an admin approves them for publication.
- Not-yet-published place and event-style suggestions can be edited directly by their creator inside the member area.
- Change and deletion wishes for published places and event-style entries always run through a reasoned moderation request.
- Pending new places and event-style entries can already be used as location suggestions for events while they are still under review.
- Duplicate submissions for places and event-style entries should be blocked server-side at least by name and address.
- The
Eventsinput flow should stay as simple as possible and therefore only shows fields relevant for real scheduled events. - Own events now only require title, date, and the
with childrenchoice; the description is optional. - Event locations now support the modes
place from database,event from database, orcustom. - When a database-backed place or event is selected, the address and category are taken directly from that source entry.
- Database-backed event locations now use a real select field instead of free text;
place from databaseonly shows places, whileevent from databaseonly shows currently active event-style entries inside their valid date window. - Inside the own-event form,
valid untilandrecurrenceare hidden. - When an own event uses a database-backed location, address and category are shown as informational values and are not edited directly.
- The own-event form now offers direct links into creating a new place or a new event-style listing.
- After that intermediate step, the user returns to the own-event form with the previous event input restored and the newly created place or event-style listing already selected.
- When
event from databaseis selected, the event date must fall inside that source event's valid date window. - Categories in the member area are handled via a search input with existing suggestions and automatic creation when needed.
- Own events support an optional description, a clear
with childrenyes/no field, optional capacity, an optional image, and either a database-backed location or a custom address. Profile Levelsis an owner-only area for community levels and the overview of system levels.- Community levels are now editable through
system_settings.community_levels_jsonand currently carry the rightshighlight helpful repliesandapply for forum admin. - Inside
Profile Levels, the owner can additionally search users and manually increase community points with a required reason. Profile Levelsalso includes a list of users who reached at least the rankPillar of the Fathers Communitywithin the last 30 days.- System levels remain separate as the roles
Forum Admin,Site Admin, andSiteOwner. Forum Admincan already confirm and merge categories as well as approve places and event-style entries.SiteOwnerandSite Adminfully inherit those approval rights.- System-level assignment in
Community Adminnow runs through user search instead of raw user IDs; site admins remain limited by the existing role rules. - Categories no longer live under
System, but in their own member-area sectionCategories; that area only shows newly created categories and merges them into existing database categories through a suggestion field. - New categories remain visible there until an authorized user confirms them or merges them into an existing category.
- The
Categoriesarea also includes a search across existing categories so they can be found and merged directly. - During merging, the category that should not be kept is removed completely and the view is reloaded fresh afterwards.
- Merged categories are additionally blocked internally through redirects so default seeding or later inputs cannot make them selectable again.
- During merging, it is now possible to explicitly choose which of the two categories should be kept.
- Community levels can now additionally carry the rights for category handling as well as place and event approvals.
- Existing stored community levels receive these two rights automatically in the fallback from 750 points upward, unless they were explicitly saved differently.
Technical Frame
- custom front controller in
public/index.php - templates under
partials/ - business logic under
src/App/ - global frontend mainly via
public/assets/js/app.jsandpublic/assets/css/app.css
New Expansion Stage: Listings and Places
- New table base:
listing_places,listings,listing_occurrences,listing_prices,listing_benefits,listing_categories - Goal: later distinguish between own event, partner offer, general place, and editorial event entry
- Google is not integrated productively yet; the system is only being prepared for it via settings and data fields
Deferred To-dos
- Large calendar-provider integrations should be added later in addition to the ICS feed, starting primarily with Google and Microsoft/Outlook.
- The target model is no reverse sync, but a user-side OAuth login through Papa-Kind-Treff followed by a direct calendar connection or event synchronization at the respective provider.
Maintenance Note
- Whenever one of these files changes, the matching files in
Internal/de/andInternal/en/must be kept aligned. - The root
README.mdacts as the startup document for new chats and should be reviewed alongside major context changes.