# Crewli — Product Backlog > Gedocumenteerde wensen en features die bewust zijn uitgesteld. > Bijgewerkt: April 2026 > > **Gebruik:** Voeg nieuwe items toe als ze tijdens development ontstaan. > Geef elk item een prioriteit en fase zodra je het gaat oppakken. --- ## Fase 3 — Geplande features ### ARCH-01 — Recurrence / Terugkerende events **Aanleiding:** Schaatsbaan use case — 8 weken, elke za+zo openingsdagen. **Wat:** Organisator definieert één template sub-event met RRULE. Platform genereert automatisch alle instanties. **Details:** - RRULE formaat (RFC 5545): `FREQ=WEEKLY;BYDAY=SA,SU;UNTIL=20270126` - `events.recurrence_rule` (string nullable) — al gereserveerd in schema - `events.recurrence_exceptions` (JSON) — cancelled + modified dates - UI: "Genereer openingsdagen" wizard - Aanpassen van één instantie raakt template niet - "Alleen deze dag" / "Alle volgende dagen" / "Alle dagen" (Google Calendar patroon) **Schema:** Kolommen al aanwezig in v1.7. Alleen generator-logica ontbreekt. --- ### ARCH-02 — Min/max shifts per vrijwilliger per serie **Aanleiding:** Schaatsbaan — eerlijke verdeling, minimum commitment. **Wat:** Per festival/serie instelbaar minimum en maximum aantal shifts dat een vrijwilliger kan claimen. **Details:** - `festivals.min_shifts_per_volunteer` (int nullable) - `festivals.max_shifts_per_volunteer` (int nullable) - Portal toont voortgang: "Jij hebt 2 van minimaal 4 shifts geclaimd" - Bij bereiken maximum: verdere claims geblokkeerd **Afhankelijk van:** ARCH-01 (recurrence), Portal self-service --- ### ARCH-03 — Sectie templates / kopiëren van vorig event **Aanleiding:** Organisatoren die elk jaar dezelfde secties en shifts opzetten. **Wat:** "Kopieer secties van vorig festival" functie in de UI. Kopieert festival_sections + shifts structuur (zonder toewijzingen). **Details:** - UI: dropdown "Kopieer structuur van..." bij aanmaken festival - Optie: kopieer alleen secties / secties + shifts / alles - Tijden worden proportioneel aangepast aan nieuwe datums **Prioriteit:** Hoog — bespaart veel handmatig werk bij terugkerende festivals --- ### ARCH-04 — Cross-festival conflictdetectie **Aanleiding:** Vrijwilliger die bij twee festivals van dezelfde organisatie op dezelfde dag ingepland staat. **Wat:** Waarschuwing (geen blokkade) als iemand al actief is op een ander festival van dezelfde organisatie op dezelfde datum. **Details:** - Soft check — waarschuwing tonen, niet blokkeren - Relevant bij organisaties met meerdere festivals tegelijk - Query: `shift_assignments` cross-festival op person_id + datum --- ### ARCH-05 — Shift fairness / prioriteitswachtrij **Aanleiding:** Populaire shifts worden direct volgeboekt door snelle vrijwilligers. **Wat:** Optionele wachtrij-modus waarbij het systeem eerlijk verdeelt op basis van: reliability score, aantal uren al ingepland, aanmeldvolgorde. **Details:** - `shifts.assignment_mode` (enum: first_come | fair_queue | manual) - Fair queue: systeem wijst toe op basis van algoritme - Organisator keurt resultaat goed voor publicatie **Prioriteit:** Middel — nice-to-have voor grote festivals --- ## Fase 3 — Communicatie & Notificaties ### COMM-01 — Real-time WebSocket notificaties **Aanleiding:** Differentiator — geen van de concurrenten heeft dit. **Wat:** Push notificaties via Laravel Echo + Soketi voor: - Nieuwe vrijwilliger aanmelding - Shift geclaimd - Uitnodiging geaccepteerd - Shift niet gevuld (waarschuwing) - No-show alert op show-dag **Tech:** Laravel Echo + Soketi (zelf-gehoste WebSocket server) **Frontend:** Notificatie bell in topbar activeren --- ### COMM-02 — Topbar volledig activeren **Aanleiding:** Vuexy topbar staat er maar is niet aangesloten op Crewli. **Wat:** - Zoekbalk (CTRL+K) aansluiten op Crewli-entiteiten (personen, events, secties zoeken) - Notificatie bell koppelen aan COMM-01 - App switcher: Organizer / Admin / Portal wisselen - User avatar: gekoppeld aan ingelogde gebruiker (deels al gedaan) **Prioriteit:** Middel — werkt zonder maar verbetert UX significant --- ### COMM-03 — Globale zoekfunctie (cmd+K) **Aanleiding:** Differentiator — cross-entiteit zoeken. **Wat:** Modal zoekbalk die zoekt over: personen, events, artiesten, secties, shifts **Tech:** Meilisearch of database full-text search **Prioriteit:** Laag — Fase 4 --- ### COMM-04 — SMS + WhatsApp campagnes via Zender **Aanleiding:** WeezCrew heeft dit als sterk punt. **Wat:** Bulk communicatie via Zender (zelf-gehoste SMS/WhatsApp gateway) - Normal urgency → email - Urgent → WhatsApp - Emergency → SMS + WhatsApp parallel **Tech:** ZenderService (al gedocumenteerd in dev guide) **Afhankelijk van:** Communicatie module backend --- ## Fase 3 — Show Day & Operationeel ### OPS-01 — Mission Control **Aanleiding:** In2Event's sterkste feature. **Wat:** Real-time operationele hub op show-dag: - Live check-in overzicht per sectie - Artiest handling (aankomst, soundcheck, performance status) - No-show alerts met automatische opvolging - Inventaris uitgifte (portofoons, hesjes) **Prioriteit:** Hoog voor show-dag gebruik --- ### OPS-02 — No-show automatisering **Aanleiding:** 30-minuten alert voor niet-ingecheckte vrijwilligers. **Wat:** Automatische WhatsApp/SMS via Zender als vrijwilliger niet is ingecheckt 30 min na shift-starttijd. **Schema:** `show_day_absence_alerts` al aanwezig ✅ **Afhankelijk van:** COMM-04 (Zender), OPS-01 (Mission Control) --- ### OPS-03 — Allocatiesheet PDF generator **Aanleiding:** WeezCrew heeft branded PDF per crew. **Wat:** Gepersonaliseerde PDF per vrijwilliger/crew: taakbeschrijving, tijden, locatie, QR-code voor check-in. **Tech:** DomPDF (al geïnstalleerd) **Prioriteit:** Middel --- ### OPS-04 — Scanner infrastructuur **Aanleiding:** QR check-in op locatie. **Wat:** Scanstations configureren, koppelen aan hardware. `scanners` tabel al aanwezig in schema ✅ **Prioriteit:** Laag — Fase 4 --- ## Fase 3 — Vrijwilligers & Portal ### VOL-01 — apps/portal/ vrijwilliger self-service **Aanleiding:** Vrijwilligers moeten zichzelf kunnen aanmelden en shifts claimen zonder toegang tot de Organizer app. **Wat:** - Publiek registratieformulier (multi-step) - Login portal voor vrijwilligers - Beschikbaarheid opgeven (time slots kiezen) - My Shifts overzicht - Shift claimen met conflictdetectie - "Ik kan toch niet komen" workflow **Afhankelijk van:** Sections + Shifts backend (al klaar ✅) --- ### VOL-02 — Vrijwilliger paspoort + reliability score **Aanleiding:** Platform-breed profiel dat accumuleert over jaren. **Wat:** - Festival-paspoort: visuele tijdlijn van deelgenomen festivals - Reliability score (0.0-5.0): berekend via scheduled job - Coordinator-beoordeling per festival (intern, nooit zichtbaar) - "Would reinvite" indicator bij heruitnodiging **Schema:** `volunteer_profiles`, `volunteer_festival_history` al aanwezig ✅ --- ### VOL-03 — Post-festival evaluatie + retrospectief **Aanleiding:** Automatische feedback na het festival. **Wat:** - 24u na laatste shift: evaluatiemail naar vrijwilligers - Max 5 vragen (beleving, shift kwaliteit, terugkomen?) - Gegenereerd retrospectief rapport per festival - Coordinator-beoordeling parallel (intern) **Schema:** `post_festival_evaluations`, `festival_retrospectives` al aanwezig ✅ --- ### VOL-04 — Shift swap workflow (portal) **Aanleiding:** Vrijwilliger wil shift ruilen met collega. **Wat:** - Open swap: iedereen mag reageren - Persoonlijke swap: specifieke collega vragen - Na akkoord beide: coordinator bevestigt (of auto-approve) - Wachtlijst: bij uitval automatisch aanschrijven **Schema:** `shift_swap_requests`, `shift_absences`, `shift_waitlist` al aanwezig ✅ --- ## Fase 3 — Artiesten & Advancing ### ART-01 — Artist advancing portal (apps/portal/) **Aanleiding:** Crescat's sterkste feature. **Wat:** - Sectie-gebaseerd advance portal via gesignde URL - Per sectie onafhankelijk submitbaar (Guest List, Contacts, Production) - Milestone pipeline: Offer In → Advance Received - Per-artiest zichtbaarheidscontrole van advance secties - Submission diff tracking (created/updated/untouched/deleted) **Schema:** `advance_sections`, `advance_submissions` al aanwezig ✅ --- ### ART-02 — Timetable (stage + drag-drop) **Aanleiding:** FullCalendar timeline view voor podia-planning. **Wat:** - Timeline view per podium - Drag-and-drop performances - B2B detectie (twee artiesten op zelfde podium zelfde tijd) **Tech:** FullCalendar (al in stack ✅) --- ## Fase 3 — Formulieren & Leveranciers ### FORM-01 — Formulierbouwer **Aanleiding:** WeezCrew heeft een krachtige drag-sorteerbare builder. **Wat:** - Drag-sorteerbaar, conditionele logica - Live preview - Iframe embed voor externe websites - Configureerbare velden per crowd type **Schema:** `public_forms` al aanwezig ✅ --- ### SUP-01 — Leveranciersportal + productieverzoeken **Aanleiding:** Leveranciers moeten productie-informatie kunnen indienen. **Wat:** - Token-gebaseerde portal toegang (geen account nodig) - Productieverzoek indienen (mensen, tech, stroom, voertuigen) - Crowd list indienen voor hun crew **Schema:** `production_requests`, `material_requests` al aanwezig ✅ --- ## Fase 4 — Differentiators ### DIFF-01 — Cross-event crew pool + reliability score **Aanleiding:** Vrijwilligers hergebruiken over events van dezelfde organisatie. **Wat:** Eén klik heruitnodiging op basis van vorig jaar. Reliability score zichtbaar naast naam in de lijst. --- ### DIFF-02 — Crew PWA (mobiel) **Aanleiding:** On-site zelfservice voor crew op hun telefoon. **Wat:** Progressive Web App voor: shifts bekijken, briefing lezen, clock-in, push notificaties. --- ### DIFF-03 — Publieke REST API + webhooks **Aanleiding:** Enterprise integraties. **Wat:** Gedocumenteerde publieke API + webhook systeem voor third-party integraties (ticketing, HR, etc.) --- ### DIFF-04 — CO2 / Duurzaamheidsrapportage **Aanleiding:** Toenemende focus op duurzame events. **Wat:** Emissieberekeningen op basis van transport en energieverbruik. **Status:** Expliciet out of scope voor v1.x --- ## Apps & Platforms ### APPS-01 — apps/admin/ volledig bouwen **Aanleiding:** Super Admin panel voor platform-beheer. **Wat:** - Alle organisaties beheren - Billing status wijzigen - Platform-gebruikers beheren - Usage statistieken --- ### APPS-02 — OrganisationSwitcher ingeklapte staat fix **Aanleiding:** Flikkering/hover-bug bij ingeklapte sidebar. **Wat:** Correcte weergave en animatie in ingeklapte staat. **Prioriteit:** Low — cosmetisch, werkt functioneel wel --- ## Technische schuld ### TECH-01 — Bestaande tests bijwerken na festival/event refactor **Aanleiding:** Na toevoegen parent_event_id worden bestaande tests mogelijk fragiel door gewijzigde factory-setup. **Wat:** Alle Feature tests reviewen en bijwerken waar nodig. --- ### TECH-02 — scopeForFestival helper op Event model **Aanleiding:** Queries die door parent/child heen moeten werken. **Wat:** `Event::scopeWithChildren()` en `Event::scopeForFestival()` helper scopes zodat queries automatisch parent + children bevatten. --- ### TECH-03 — DevSeeder uitbreiden met festival-structuur **Aanleiding:** Na festival/event refactor heeft de DevSeeder realistische testdata nodig met parent/child events. **Wat:** DevSeeder aanpassen met: - Test festival (parent) - 2-3 sub-events (children) - Personen op festival-niveau --- _Laatste update: April 2026_ _Voeg nieuwe items toe met prefix: ARCH-, COMM-, OPS-, VOL-, ART-, FORM-, SUP-, DIFF-, APPS-, TECH-_