Communication & Media
148 features · 15 subsystems
Communication tools, content management, live streaming, and media management for the petanque community.
News & Content Management
F09.01- F09.01.01 Shipped
News article creation and publication (per federation level)
✅ PL-F0901a - F09.01.02 Shipped
Content categories (results, announcements, interviews, opinions)
✅ PL-F0901a - F09.01.03 Shipped
Multi-language content support
✅ PL-F0901a - F09.01.04 Shipped
Editorial workflow (draft > review > publish)
✅ PL-F0901a - F09.01.05 Shipped
Featured/pinned content
✅ PL-F0901b - F09.01.06 Shipped
News feed aggregation (from all federation levels)
✅ PL-F0901b - F09.01.07 Shipped
RSS feed generation
✅ PL-F0901b - F09.01.08 Shipped
Content scheduling (publish at future date)
✅ PL-F0901b
Notification System
F09.02- F09.02.01 Shipped
Email notifications (SendGrid)
✅ PL-F0902a - F09.02.02 Shipped
SMS notifications (46elks)
✅ PL-F0902a - F09.02.03 Shipped
Push notifications (FCM)
✅ PL-F0902a - F09.02.04 Shipped
Notification templates (customizable per federation, per language)
✅ PL-F0902a - F09.02.05 Shipped
Notification preferences per user (channels, frequency, quiet hours)
✅ PL-F0902a - F09.02.06 Shipped
Competition-specific notifications (draw published, next match, results)
✅ PL-F0902b - F09.02.07 Shipped
License renewal reminders (notification type)
✅ PL-F0902b - F09.02.08 Shipped
Ranking change notifications (notification type)
✅ PL-F0902b - F09.02.09 Shipped
Federation circular distribution (bulk send)
✅ PL-F0902b - F09.02.10 Shipped
Notification delivery log (history per user)
✅ PL-F0902b - F09.02.11 Shipped
Engagement attribution capture — EngagementAttribution-events (email_opened/clicked/bounced, webinar_attended, resource_downloaded, signup) konsumeras från notification-pipen och webinar/resource-event-bus — PL-T223
✅ PL-T223 - F09.02.12 Shipped
Engagement snapshot builder — idempotent aggregat per (federation_id, club_id, period_type, period_start) med viktad engagement_score 0–100 — PL-T223
✅ PL-T223
In-App Messaging
F09.03- F09.03.01 Shipped
Direct messaging (player to player, official to player)
✅ PL-F0903 - F09.03.02 Shipped
Group messaging (team, club, commission)
✅ PL-F0903 - F09.03.03 Shipped
Federation announcements (broadcast to all members)
✅ PL-F0903 - F09.03.04 Shipped
Message read receipts
✅ PL-F0903 - F09.03.05 Shipped
File sharing in messages
✅ PL-F0903 - F09.03.06 Shipped
Message search
✅ PL-F0903
Match Recording & Live Production Studio
F09.04Turn any phone/tablet into a camera and produce professional-looking match broadcasts with minimal equipment.
How it works- F09.04.01 Shipped
Record a match directly from the app (one phone = one camera)
✅ PL-F0904a - F09.04.02 Shipped
Multi-device camera setup (2-4 phones/tablets as camera sources for same match)
✅ PL-F0904a - F09.04.03 Shipped
Camera role assignment (wide court view, close-up, cochonnet cam, player cam)
✅ PL-F0904a - F09.04.04 Shipped
Automatic camera switching (AI-based or rule-based: switch to active end of court)
✅ PL-F0904a - F09.04.05 Shipped
Manual camera switching (director/commentator selects which camera is live)
✅ PL-F0904a - F09.04.06 Shipped
Picture-in-picture mode (main feed + small secondary camera)
✅ PL-F0904a - F09.04.07 Shipped
Camera sync (all devices synchronized to same timeline)
✅ PL-F0904b - F09.04.08 Shipped
Audio from any camera device (or separate microphone device)
✅ PL-F0904b - F09.04.09 Shipped
Live score overlay (auto-synced from match scoring in app)
✅ PL-F0904b - F09.04.10 Shipped
Player name/photo overlays when camera focuses on them
✅ PL-F0904b - F09.04.11 Shipped
Mène counter and match progress bar
✅ PL-F0904b - F09.04.12 Shipped
Boule count indicator (how many boules each team has left)
✅ PL-F0904b - F09.04.13 Shipped
Tournament bracket/standings overlay
✅ PL-F0904c - F09.04.14 Shipped
Sponsor logo overlay (configurable per competition)
✅ PL-F0904c - F09.04.15 Shipped
"Lower third" graphics (player stats, ELO, ranking)
✅ PL-F0904c - F09.04.16 Shipped
Custom text overlay (commentator can add text messages)
✅ PL-F0904c - F09.04.17 Shipped
Commentator mode (separate device for commentary audio)
✅ PL-F0904c - F09.04.18 Shipped
Director mode (separate device to switch cameras and control overlays)
✅ PL-F0904c - F09.04.19 Shipped
Drawing tools on screen (draw arrows, circles to demonstrate tactics)
✅ PL-F0904d - F09.04.20 Shipped
Telestrator (draw on paused/live video like sports TV)
✅ PL-F0904d - F09.04.21 Shipped
Instant replay (mark moments, replay from any camera angle)
✅ PL-F0904d - F09.04.22 Shipped
Slow-motion replay
✅ PL-F0904d - F09.04.23 Shipped
Split-screen comparison (show two angles simultaneously)
✅ PL-F0904d - F09.04.24 Shipped
Pre-match player cards (show stats, ELO, recent form before match)
✅ PL-F0904d - F09.04.25 Shipped
Post-mène summary graphic (auto-generated after each end)
✅ PL-F0904e - F09.04.26 Shipped
Direct stream to YouTube Live (RTMP integration)
✅ PL-F0904e - F09.04.27 Shipped
Direct stream to Twitch
✅ PL-F0904e - F09.04.28 Shipped
Direct stream to Facebook Live
✅ PL-F0904e - F09.04.29 Shipped
Multi-platform simultaneous streaming
✅ PL-F0904e - F09.04.30 Shipped
In-app live viewing (watch directly in Petanque Life)
✅ PL-F0904e - F09.04.31 Shipped
Stream quality settings (adapt to available bandwidth)
✅ PL-F0904f - F09.04.32 Shipped
Stream schedule and notification (followers get alerted)
✅ PL-F0904f - F09.04.33 Shipped
Embeddable live player for federation/club websites
✅ PL-F0904f - F09.04.34 Shipped
Live viewer count and chat integration
✅ PL-F0904f - F09.04.35 Shipped
Local recording (save to device even without streaming)
✅ PL-F0904f - F09.04.36 Shipped
Cloud recording (save all camera feeds to cloud storage)
✅ PL-F0904f - F09.04.37 Shipped
Automatic highlight generation (key moments based on score changes)
✅ PL-F0904g - F09.04.38 Shipped
Manual highlight clipping (mark start/end of interesting moments)
✅ PL-F0904g - F09.04.39 Shipped
Post-match edit: re-cut with different camera angles
✅ PL-F0904g - F09.04.40 Shipped
Automatic match summary video (condensed highlights + score)
✅ PL-F0904g - F09.04.41 Shipped
VOD archive (all recorded matches searchable by competition, player, date)
✅ PL-F0904g - F09.04.42 Shipped
Share match recording (link to specific match video)
✅ PL-F0904g - F09.04.43 Shipped
Video linked to match record (watch the video from the match detail page)
✅ PL-F0904h - F09.04.44 Shipped
Audio-only mode (commentary without video for low bandwidth)
✅ PL-F0904h - F09.04.45 Shipped
Score-only live feed (text updates when video isn't possible)
✅ PL-F0904h - F09.04.46 Shipped
Offline recording with later upload (record locally, upload when connected)
✅ PL-F0904h - F09.04.47 Shipped
Adaptive bitrate streaming (auto-adjust quality)
✅ PL-F0904h
Social Media Integration
F09.05- F09.05.01 Shipped
Auto-post results to social media (Facebook, Instagram, X)
✅ PL-F0905 - F09.05.02 Shipped
Social media content templates
✅ PL-F0905 - F09.05.03 Shipped
Hashtag management
✅ PL-F0905 - F09.05.04 Shipped
Social media analytics
✅ PL-F0905 - F09.05.05 Shipped
User-generated content curation
✅ PL-F0905
Photo & Video Management
F09.06- F09.06.01 Shipped
Photo gallery per competition/event
✅ PL-F0906 - F09.06.02 Shipped
Photographer accreditation management
✅ PL-F0906 - F09.06.03 Shipped
Photo consent management (GDPR)
✅ PL-F0906 - F09.06.04 Shipped
Video highlight creation tools
✅ PL-F0906 - F09.06.05 Shipped
Media library with tagging and search
✅ PL-F0906 - F09.06.06 Shipped
Press kit generation per event
✅ PL-F0906
Document Management
F09.07- F09.07.01 Shipped
Federation document repository (statutes, regulations, templates)
✅ PL-F0907 - F09.07.02 Shipped
Document versioning and history
✅ PL-F0907 - F09.07.03 Shipped
Document access control (public, members, officials only)
✅ PL-F0907 - F09.07.04 Shipped
Form templates (license application, transfer request, etc.)
✅ PL-F0907 - F09.07.05 Shipped
Digital signature integration
✅ PL-F0907
Sociala medier-integration
F09.08Platform-specific auto-publishing of match results, player cards, and highlight videos to Facebook, Instagram, X/Twitter, and TikTok. Result graphic generator, player card templates, competition trailers, and social media calendar.
How it works- F09.08.01 Shipped
Auto-post to Facebook after match result
✅ PL-F0908a - F09.08.02 Shipped
Auto-post to Instagram with player card
✅ PL-F0908a - F09.08.03 Shipped
Twitter/X integration for match results
✅ PL-F0908a - F09.08.04 Shipped
TikTok publishing of highlights
✅ PL-F0908a - F09.08.05 Shipped
Resultat-grafikgenerator (Open Graph match-result image cards)
✅ PL-F0908b - F09.08.06 Shipped
Player card-generator med anpassningsbar mall
✅ PL-F0908b - F09.08.07 Shipped
Tävlings-trailer auto-genererad från schema
✅ PL-F0908b - F09.08.08 Shipped
Social media calendar per klubb/federation
✅ PL-F0908b
Marketing vs transactional emails (gränsdragning)
F09.09*Introducerad: PL-T152. Se `docs/engineering/integrations/email-distributor.md` och `docs/engineering/operations/newsletter-playbook.md`.*
How it works- F09.09.01 Shipped
Delad EmailDistributor-abstraktion — send_transactional vs send_bulk-metoder i samma interface, samma backend (Mailjet/ACS/Null)
✅ PL-T152 - F09.09.02 Shipped
Delad suppression-lista (newsletter_suppressions) — hard-bounce/complaint från transactional blockerar även marketing till samma adress och vice versa
✅ PL-T152 - F09.09.03 Shipped
Separata quota/rate-limits — transactional har ingen throttle, marketing cap:ar via campaign throttle_per_hour
✅ PL-T152 - F09.09.04 Shipped
Quiet-hours-policy — marketing-sends pausar 22:00–07:00 recipient-local; transactional oberörda; override kräver fresh-auth
✅ PL-T152 - F09.09.05 Shipped
Separata audit-actions i sys_audit_entries — notification.* för transactional, newsletter.* för marketing; gör det trivialt att revidera varje typ för sig
✅ PL-T152
Broadcaster realtidsfeed
F09.10Per-tenant realtidsfeed för broadcasters, regi-team och stats-providers
- F09.10.01 Shipped
BroadcasterFeed-dokument med slug, event_id, scopes, latency_budget_ms
✅ PL-T216 - F09.10.02 Shipped
Token-utfärdande JWT ES512 med kid + scopes + broadcaster_id; HS512-fallback för tester
✅ PL-T216 - F09.10.03 Shipped
SSE-streaming /broadcast/public/feeds/{slug}/stream med scope- + event-validering
✅ PL-T216 - F09.10.04 Shipped
In-memory pub/sub-broker med 60-sekunders replay-fönster
✅ PL-T216 - F09.10.05 Shipped
Last-Event-ID-reconnect spelar upp missade events efter avbrott
✅ PL-T216 - F09.10.06 Shipped
Token-revoke roterar kid → äldre tokens fail:ar med token_revoked
✅ PL-T216 - F09.10.07 Shipped
Publish-endpoint validerar event_type mot whitelist (422 om okänd)
✅ PL-T216 - F09.10.08 Shipped
Replay-endpoint /broadcast/feeds/{feed_id}/replay för admin debug
✅ PL-T216
Broadcast graphics package
F09.11Versionerad grafik-paket för OBS / vMix / Wirecast browser-sources:
- F09.11.01 Shipped
BroadcastGraphicsPackage-dokument med theme + templates[]
✅ PL-T216 - F09.11.02 Shipped
Färgvalidering (#rrggbb) på theme-fält
✅ PL-T216 - F09.11.03 Shipped
Mall-uppdatering bumpar paketets version automatiskt
✅ PL-T216 - F09.11.04 Shipped
Embed-endpoint /embed/scorebug/{template_slug} returnerar HTML/JS för OBS
✅ PL-T216 - F09.11.05 Shipped
Browser-source-token validerar mot browser scope och package-binding
✅ PL-T216 - F09.11.06 Shipped
"Set default"-paket per tenant; en åt gången
✅ PL-T216 - F09.11.07 Shipped
Admin-preview-endpoint renderar mall som standalone HTML för QA
✅ PL-T216
Press-kit generator (utbyggd)
F09.12Versionerad, flerspråkig press-kit per event eller säsong. Embargo-
- F09.12.01 Shipped
BroadcastPressKit-dokument med locales[], content{}, assets[], version
✅ PL-T216 - F09.12.02 Shipped
Locale-content-validering (varje content-key måste finnas i locales[])
✅ PL-T216 - F09.12.03 Shipped
Publish bumpar version, sätter published_at, audit-loggar publish
✅ PL-T216 - F09.12.04 Shipped
Public render-endpoint /broadcast/public/press-kits/{event_id}/{lang}
✅ PL-T216 - F09.12.05 Shipped
Embargo blockerar anonyma viewers (403) tills embargo_until passerat
✅ PL-T216 - F09.12.06 Shipped
Approved press-credentials med broadcaster/press outlet-typ bypassar embargo
✅ PL-T216 - F09.12.07 Shipped
Saknad locale returnerar 404
✅ PL-T216 - F09.12.08 Shipped
Releases, approved-quotes, fact-sheets som strukturerade fält per locale
✅ PL-T216
Content syndication (RSS/Atom/JSON Feed)
F09.13Per-tenant syndication-feeds för downstream-republishers. Tre format:
- F09.13.01 Shipped
ContentSyndication-dokument med slug, formats[], whitelist, embargo
✅ PL-T216 - F09.13.02 Shipped
RSS 2.0-renderer i application/rss+xml
✅ PL-T216 - F09.13.03 Shipped
Atom 1.0-renderer i application/atom+xml
✅ PL-T216 - F09.13.04 Shipped
JSON Feed 1.1-renderer i application/feed+json
✅ PL-T216 - F09.13.05 Shipped
Outlet-whitelist tomt = öppen feed; satt = anonym GET returnerar tom body
✅ PL-T216 - F09.13.06 Shipped
Per-outlet rate-limit OutletRateLimiter returnerar 429 + Retry-After: 60
✅ PL-T216 - F09.13.07 Shipped
Embargo-minutes filtrerar bort items publicerade senaste N minuter
✅ PL-T216 - F09.13.08 Shipped
Locale-filter på item-nivå för flerspråkiga publicister
✅ PL-T216
Syndication outlet onboarding
F09.14Self-service ansökningsflöde för broadcasters / sportjournalister /
- F09.14.01 Shipped
SyndicationOutlet-dokument med name, contact, api_key_ref (sha256), is_active
✅ PL-T216 - F09.14.02 Shipped
Public apply-endpoint /broadcast/public/syndication/outlets/apply
✅ PL-T216 - F09.14.03 Shipped
Approve returnerar api_key exakt en gång + sätter is_active=true
✅ PL-T216 - F09.14.04 Shipped
Double-approve blockeras med 409
✅ PL-T216 - F09.14.05 Shipped
API-key-verifiering matchar sha256(api_key) mot api_key_ref
✅ PL-T216
Media accreditation (utbyggd)
F09.15Per-event accrediterings-kort med QR + entry-scan-logg + intervju-
- F09.15.01 Shipped
MediaCredential-dokument med journalist + outlet + zones + valid_from/to
✅ PL-T216 - F09.15.02 Shipped
Public apply-endpoint /broadcast/public/credentials/apply
✅ PL-T216 - F09.15.03 Shipped
Admin review-endpoint stänger till approved eller denied med reason
✅ PL-T216 - F09.15.04 Shipped
QR-endpoint utfärdar JWT med credential_id + kid + valid_from/to claims
✅ PL-T216 - F09.15.05 Shipped
Scan-endpoint /broadcast/media/scan returnerar 7 stabila detail-strings vid 401
✅ PL-T216 - F09.15.06 Shipped
Revoke roterar qr_payload_kid → gamla QR fail:ar med token_revoked
✅ PL-T216 - F09.15.07 Shipped
Entry-scans loggas med gate, riktning, zon, scanned_by
✅ PL-T216 - F09.15.08 Shipped
MediaInterviewSlot-dokument för bokningsbara mixed-zone-fönster
✅ PL-T216 - F09.15.09 Shipped
Slot-booking validerar approved-status; double-book → 409; full slot → 409
✅ PL-T216 - F09.15.10 Shipped
Lyckad booking länkar slot_id till credential.interview_slot_ids
✅ PL-T216
No features match your filters.