Social & Community Engagement
At a glance
Social and community engagement layers Strava-style social-sport mechanics onto petanque: rich activity sharing, kudos and comments on every moment, training logs with photos and video, private group challenges, one-tap club shoutouts, follow-graph-driven social discovery, end-to-end-encrypted in-app messaging and beautifully composed share-cards sized for every external network — turning solo training and casual play into a connected, shareable petanque life.
How it works
The social layer treats every meaningful petanque moment — a match played, a training session logged, a personal best, a badge earned, a photo posted — as an activity that flows into the social graph. Activities default to "followers only" but can be made public or restricted to a chosen list. Each activity supports kudos (a single-tap appreciation), comments and reactions, mirroring patterns players already know from fitness apps.
Training logs let players record practice sessions outside of formal competitions: duration, format, surface, partners, focus area (tirer drills, pointer drills, match play). Logs feed into XP, streaks, weekly summaries and personal bests. Photos and short videos can be attached and shared to followers or a chosen club channel.
Group challenges let a circle of friends or a club section create a private mini-leaderboard for a defined window — "play 10 matches in November", "highest weekly fantasy score", "most distinct venues visited this season". Club shoutouts is a one-tap broadcast that thanks a teammate, congratulates a member or highlights a moment, posted to the club feed and pushed to opted-in members.
Social discovery suggests players to follow based on the follow graph, shared clubs, geographic proximity and common competitions — "three players you played against last weekend", "five people from your club you don't follow yet". In-app messaging supports 1-on-1 and small-group chats with end-to-end encryption for private threads, attachment of activities and presence indicators. Moderation tools, reporting and block lists are built in.
Share cards generate beautifully composed images — a match result, a podium finish, a personal best, a fantasy score — sized for Instagram, Facebook, X, WhatsApp and Threads, with the player's chosen branding and the federation watermark. Universal links on every shared piece deep-link recipients into the relevant app screen, with a graceful fallback to the public web profile.
Key capabilities
- Activity sharing for matches, training sessions, badges and personal bests
- Kudos, comments and reactions on every activity
- Training logs with duration, focus area, photos and video
- Group challenges and private mini-leaderboards
- Club shoutouts and broadcast thank-yous
- Social discovery suggestions from the follow graph and proximity
- In-app messaging plus share-card generation for every external network
In practice
A player wraps a Sunday morning training session — 90 minutes of tirer drills with two clubmates. They log it in five seconds, attach a slow-mo video of a perfect carreau, share to followers. By lunch they have 14 kudos and a comment from their regional coach.
They open the suggestions panel and follow three players they faced last weekend. In the afternoon a friend creates a group challenge: "most matches played in the next 14 days, top three split a coffee". They join with one tap.
A week later they hit a new personal best and the share-card generator produces a polished image they post to Instagram with one tap; the link drops two new followers into the app.
Features in this subsystem
18| ID | Status | Features |
|---|---|---|
| F15.09.01 | Shipped | PL-F1509a ✅ PL-F1509a |
| F15.09.02 | Shipped | PL-F1509a ✅ PL-F1509a |
| F15.09.03 | Shipped | PL-F1509a ✅ PL-F1509a |
| F15.09.04 | Shipped | PL-F1509a ✅ PL-F1509a |
| F15.09.05 | Shipped | PL-F1509b ✅ PL-F1509b |
| F15.09.06 | Shipped | PL-F1509b ✅ PL-F1509b |
| F15.09.07 | Shipped | PL-F1509b ✅ PL-F1509b |
| F15.09.08 | Shipped | PL-F1509b ✅ PL-F1509b |
| F15.09.09 | Planned | PL-T098 (legacy) Group membership — legacy auto-provision per klubb byggs INTE; rebuilden: montering på valfri nod eller direkt under förbundet, medlemskap för vem som helst med en identitet, se F15.14.13 |
| F15.09.10 | Planned | PL-T098 (legacy) Nested comments (max djup 2) med @-mentions och reaktioner — se F15.14.14 |
| F15.09.11 | Planned | PL-T098 (legacy) Moderator-roller + ban + promote/demote med admin-only guards — se F15.14.13; sedan m-6 dessutom förbundets moderator (social:moderate, systemmallen social_moderator, tenant- eller nodskopad) och operatörens läs-only-insyn med safeguarding-eskalering (/v1/sys/social/{overview,cases}, sys.social.safeguard) |
| F15.09.12 | Planned | PL-T098 (legacy) Join request-flöde (join_policy=request, oavsett nivå) — se F15.14.13 |
| F15.09.13 | Planned | PL-T098 (legacy) Content report på inlägg/kommentarer/meddelanden → ETT ärende per innehåll, tröskeln (3 rapportörer) döljer provisoriskt, moderatorns åtgärd (mark_safe|hide|delete|anonymize_author) genom ägarnas sömmar med audit; förbundets F1-6-granskning av tävlingsriktade lagannonser (team_listing_publish); rapportörens radering + 365-dygnsgallringen — se specs/api/endpoints/social-moderation.md, sys-social.md, social-team-listings.md §Annonsmoderering. Förbundets modereringskö i arrangörsappen (D-ADMINAPP 94f74ebf.m-14.t-8): admin-ytan /moderering (kön, grupperna, policyväxeln) är flyttad till packages/shared/src/views/social/moderering med två renderare och nås i arrangörsappen på /moderering med samma kontrakt (MOD_TESTIDS), samma URL-state (?flik=&arende=… läst och skriven i båda) och samma allowed_actions-dom — spelarappens *Rapportera* och modereringspanel är orörda; vy-spec specs/arrangor/views/moderering.md |
| F15.09.14 | Planned | PL-T098 (legacy) Per-grupp settings (visibility, who-can-post, join_policy, push_policy, åldersgräns; profanity-flaggan lagras, effekten är 0154301b.m-6) — se F15.14.13 |
| F15.09.15 | Planned | PL-T098 (legacy) Fan-out policy (members/mentions-only/off) genom jobbet group_post_fanout och D-COMM:s pipe (in_app; push ägs av D-PUSH) — se F15.14.15 |
| F15.09.16 | Planned | PL-T098 (legacy) GDPR: författaren anonymiseras (»Raderad användare«), tråden står kvar, foton rivs — se F15.14.16 |
| F15.09.17 | Shipped | PL-T286 ✅ PL-T286 |
| F15.09.18 | Shipped | PL-T286 ✅ PL-T286 |