**Crewli** Product Design & Technical Specification Full Stack SaaS — Event & Festival Management Platform **Version:** 1.3 | **Datum:** Maart 2026 | **Status:** Concept | **Tech Stack:** Laravel 12 + Vue 3 # 1. Product Vision & Scope Wat is Crewli en voor wie is het gebouwd? ## 1.1 Samenvatting Crewli is een multi-tenant SaaS platform voor de professionele organisatie van evenementen en festivals. Het platform ondersteunt de volledige operationele cyclus: van artiestenbooking en advancing, via personeelsplanning en vrijwilligersbeheer, tot accreditatie, briefings, en real-time show-day operaties (Mission Control). Het platform wordt gebouwd als een API-first Laravel 12 backend met een Vue 3 + Vuexy frontend, en is ontworpen om meerdere organisaties (klanten) te bedienen vanuit één installatie, met volledige data-isolatie per organisatie. | | | |:--:|----| | **KERNPRINCIPE** | Crewli combineert de sterkste onderdelen van drie marktleiders: de accreditatie-engine en Mission Control van In2Event, het sectie-gebaseerde advance-portal en vrijwilligersbeheer van Crescat, en de mission/task-planning, SMS-communicatie en formulierbouwer van WeezCrew — aangevuld met differentiërende functies die geen van deze platformen biedt. | ## 1.2 Doelgroepen | **Rol** | **Beschrijving** | **Primaire module(s)** | |----|----|----| | Super Admin | Platform-eigenaar (jij/Anthropic). Beheert organisaties, billing, globale instellingen. | Admin panel | | Organisation Admin | Klant-hoofdbeheerder. Beheert evenementen, teamleden, globale instellingen per organisatie. | Org. management, events | | Event Manager | Operationele verantwoordelijke per evenement. Beheert alle modules binnen dat event. | Alle event-modules | | Staff Coordinator | Beheert bemanning, diensten, accreditatie voor specifieke secties. | Staff, Shifts, Accreditation | | Artist Manager | Beheert artiesten, advancing, timetable. | Artists, Advancing, Timetable | | Volunteer Coordinator | Beheert vrijwilligersregistraties, toewijzingen, communicatie. | Volunteers, Time Slots, Shifts | | Crew Member (staff) | Externe medewerker. Ontvangt briefing, ziet eigen rooster, checkt in. | Briefing portal (read-only) | | Volunteer | Zelfregistrerende vrijwilliger. Registreert, selecteert beschikbaarheid, claimt shifts. | Volunteer self-service portal | | Artist / Tour Manager | Externe artiest-vertegenwoordiger. Vult eigen advance-portal in. | Artist advance portal | | Supplier / Partner | Externe leverancier. Vult productieverzoek in, beheert eigen lijsten. | Supplier portal | ## 1.3 Kernbegrippen & Terminologie De volgende termen worden door het hele document en de codebase consistent gehanteerd: | **Term** | **Definitie** | |----|----| | Organisation | Een klant/organisatie die Crewli gebruikt. Heeft eigen evenementen, teamleden en instellingen. Equivalent aan 'Launchpad' in In2Event. | | Event | Een specifiek evenement of festival binnen een organisatie. Alle operationele data is event-scoped. | | Festival Section | Een operationele eenheid binnen een event: Bar, Hospitality, Technical, Security, etc. Heeft eigen Crew, Volunteers en Shifts. | | Crowd Type | Classificatie van deelnemers: Crew, Volunteer, Artist, Guest, Press, Partner, Supplier. Configureerbaar per organisatie. | | Person | Individuele deelnemer gekoppeld aan een event via een Crowd Type. | | Time Slot | Event-niveau tijdvenster met persoonscategorie (CREW / VOLUNTEER / PRESS). Aangemaakt door de organisator als temporeel raamwerk. | | Shift | Sectie-specifieke toewijzing binnen een Time Slot. Koppelt een Festival Section aan een tijdvenster met capaciteit. | | Slot (capacity) | Het aantal personen dat een Shift kan bevatten. Opgesplitst in Admin-assigned en Open for Claiming. | | Open for Claiming | Aantal shift-slots dat zichtbaar en claimbaar is in het vrijwilligersportal. (Crescat: 'For Sale') | | Accreditation | Een recht of artikel toegekend aan een persoon: toegangszones, items te ontvangen (polsbandje, maaltijd, portofoon). | | Advance / Advancing | Het proces waarbij artiestenvereisten worden verzameld vóór het evenement via een sectie-gebaseerd portal. | | Mission Control | Real-time operationele hub op show-dag: inchecken, accreditatie uitreiken, artiestenstatus. | | Briefing | Gepersonaliseerde communicatie (e-mail + PDF) naar deelnemers met e-tickets, informatie en taakbeschrijving. | | Infosheet / Advance Section | Configureerbaar formulier-sectie dat naar artiesten of leveranciers gestuurd wordt voor het ophalen van informatie. | # 2. Tech Stack & Infrastructuur Bestaande en te installeren technologieen ## 2.1 Backend | **Component** | **Keuze / Versie** | |----|----| | Language | PHP 8.2+ | | Framework | Laravel 12 (laravel/framework ^12.0) | | Authentication | Laravel Sanctum ^4.0 (SPA token auth) | | Database | MySQL 8.x (primair), Redis (cache, queues, sessions) | | Queue Driver | Redis via Laravel Horizon (monitoring + priority queues) | | Real-time | Laravel Echo + Pusher / Soketi (zelf-gehoste WebSocket server) | | File Storage | Laravel Filesystem: S3 (productie) / local (dev). Signed URLs voor beveiligde toegang. | | Email | Laravel Mailable + SendGrid of Postmark. Queue-based batch sending. | | PDF / Ticket | Laravel Browsershot (Puppeteer) of DomPDF voor server-side PDF generatie. | | Barcode | picqer/php-barcode-generator. Alphanumeriek + numeriek. QR-code via endroid/qr-code. | | Testing | PHPUnit ^11.5 + Pest. Feature tests per API route. | | Tooling | Laravel Pint (CS), Laravel Sail (Docker dev), Laravel Pail (log viewer), Tinker. | | Roles & Perms | Spatie laravel-permission (te installeren). Drie niveaus: App, Organisation, Event. | | Multi-tenancy | Custom: organisation_id scoping op alle queries. Geen package-tenancy. | | SMS + WhatsApp | Zender (zelf-gehoste instantie) via HTTP API. Zender gebruikt Android-apparaten als SMS/WhatsApp gateway. Configureerbare API endpoint + API key in .env. Fallback: Twilio voor pure SMS zonder WhatsApp. | ## 2.2 Frontend | **Component** | **Keuze / Versie** | |----|----| | Language | TypeScript 5.9.3 | | Framework | Vue 3.5.22 (Composition API + \