Vlaamse sportfederaties investeren aanzienlijk in de kwaliteit van hun aangesloten clubs. Vandaag ontbreekt een gedeeld, digitaal instrument om die kwaliteit meetbaar, vergelijkbaar en verbeterbaar te maken. Elke federatie werkt met eigen processen, spreadsheets en ad-hocinstrumenten. Dit leidt tot inefficiëntie, gebrek aan benchmarking en beperkte inzichten.
Kwaliteit Verbindt is een cross-federatief digitaal platform dat sportclubs ondersteunt in hun kwaliteitswerking. Het platform biedt clubs inzicht in hun werking, begeleidt hen via audits en bevragingen, en stelt federaties in staat om datagedreven beleid te voeren. Door kennis te delen over federatiegrenzen heen, ontstaat een gedeeld kwaliteitskader dat de Vlaamse sportclubcultuur versterkt.
Gymnastiekfederatie Vlaanderen — initiatiefnemer en pilootfederatie
Vlaamse Zwemfederatie
Vlaamse Badmintonfederatie
Vlaamse Danssportfederatie
Watersportverbond
Op businessniveau is het platform opgebouwd rond vijf pijlers:
| # | Pijler | Doel |
|---|---|---|
| 1 | Clubinzichten | Clubs een spiegel bieden: data over leden, trainers, financiën, benchmarks |
| 2 | Ledentevredenheid | Structureel bevragen van leden en analyse van tevredenheid en uitstroom |
| 3 | Audit & Kwaliteitslabel | Gestandaardiseerd kwaliteitsaudit-systeem met labels (brons, zilver, goud, …) |
| 4 | Kennisdatabank | Gecentraliseerde, gestructureerde kennis per kwaliteitsrubriek |
| 5 | AI-assistent | Intelligente ondersteuning: inzichten, aanbevelingen, chatbot |
Alle modules zijn gestructureerd rond acht gemeenschappelijke kwaliteitsrubrieken:
Deze rubrieken vormen de rode draad doorheen audits, kennisbank, dashboards en AI-inzichten.
Dit document is een alignment-document tussen de opdrachtgevende federaties en Plainsight. Het beschrijft de functionele vereisten, datastromen, gebruikersrollen en niet-functionele eisen op een niveau dat toelaat om:
Het platform hanteert een gelaagd multi-tenancy model met drie niveaus:
Het seizoen is een fundamentele entiteit die alle modules doorkruist. Elk datapunt, elke audit, bevraging en rapportering is gekoppeld aan een seizoen. Gebruikers navigeren primair binnen een seizoen en kunnen historische seizoenen raadplegen.
| Eigenschap | Beschrijving |
|---|---|
| Naam | Configureerbaar per federatie (bijv. "Seizoen 2026", "2025-2026") |
| Start- en einddatum | Per federatie instelbaar |
| Status | Actief / Afgelopen / Gepland |
| Filter | Primaire filter op alle data en modules |
| Historiek | Alle vorige seizoenen blijven raadpleegbaar |
Het platform aggregeert data uit vijf categorieën bronnen:
| Categorie | Voorbeelden | Aanlevering |
|---|---|---|
| Federatiedata | Ledenlijsten, trainersdata, diplomagegevens, clubregistraties | API-koppeling met ledenbeheer of CSV/XLS upload |
| Clubinput | Financiële gegevens, beleidsplannen, organigram, reglementen | Handmatige invoer via clubprofiel |
| Tooldata | Audit-antwoorden, survey-resultaten | Gegenereerd binnen het platform |
| Afgeleide data | Benchmarks, trends, AI-inzichten | Berekend door het platform |
| Kennisbank | Artikels, video's, best practices, richtlijnen | Via extern CMS met API-integratie |
Per federatie worden de volgende integraties voorzien:
| Federatie | SSO-systeem | Protocol | Status |
|---|---|---|---|
| Gymfed | Azure AD B2C | OIDC / SAML | Gekend |
| Zwemfed | Nog te bepalen | OIDC / SAML | In kaart te brengen |
| Badminton Vlaanderen | Nog te bepalen | OIDC / SAML | In kaart te brengen |
| Danssport Vlaanderen | Nog te bepalen | OIDC / SAML | In kaart te brengen |
| WWSV | Nog te bepalen | OIDC / SAML | In kaart te brengen |
Bij afwezigheid van SSO voorziet het platform een lokale login met MFA als fallback.
| Federatie | Systeem | Aanlevering | Datasets | Status |
|---|---|---|---|---|
| Gymfed | Ledenbeheer Gymfed | API / CSV | Leden, trainers, diploma's, clubs | In kaart te brengen |
| Zwemfed | Nog te bepalen | API / CSV | Leden, trainers, clubs | In kaart te brengen |
| Badminton Vlaanderen | Nog te bepalen | API / CSV | Leden, trainers, clubs | In kaart te brengen |
| Danssport Vlaanderen | Nog te bepalen | API / CSV | Leden, trainers, clubs | In kaart te brengen |
| WWSV | Nog te bepalen | API / CSV | Leden, trainers, clubs | In kaart te brengen |
| Federatie | CMS | Status |
|---|---|---|
| Gymfed | Nog te bepalen | In kaart te brengen |
| Zwemfed | Nog te bepalen | In kaart te brengen |
| Badminton Vlaanderen | Nog te bepalen | In kaart te brengen |
| Danssport Vlaanderen | Nog te bepalen | In kaart te brengen |
| WWSV | Nog te bepalen | In kaart te brengen |
Het platform kent zes rollen, verdeeld over drie niveaus:
| Niveau | Rol | Beschrijving |
|---|---|---|
| Platform | Super admin | Volledig beheer van het platform: federaties, organisaties, globale configuratie |
| Federatie | Federatie admin | Volledig beheer binnen de eigen federatie: clubs, gebruikers, audits, labels, configuratie |
| Federatie gebruiker | Operationeel gebruik: audits valideren, bevragingen beheren, rapporten bekijken | |
| Federatie lezer | Alleen-lezen toegang tot federatiedata en rapportages | |
| Club | Club gebruiker | Clubprofiel beheren, audits invullen, bevragingen beantwoorden, inzichten bekijken |
| Club lezer | Alleen-lezen toegang tot eigen clubdata en rapportages |
| Module / Actie | Super admin | Fed. admin | Fed. gebruiker | Fed. lezer | Club gebruiker | Club lezer |
|---|---|---|---|---|---|---|
| Federatie & org. beheer | ✔ | — | — | — | — | — |
| Gebruikersbeheer (federatie) | ✔ | ✔ | — | — | — | — |
| Clubbeheer | ✔ | ✔ | ✔ | — | — | — |
| Clubprofiel bewerken | ✔ | ✔ | ✔ | — | ✔ | — |
| Clubprofiel bekijken | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Audit configuratie | ✔ | ✔ | — | — | — | — |
| Audit starten (officieel) | ✔ | ✔ | ✔ | — | — | — |
| Audit invullen | ✔ | ✔ | ✔ | — | ✔ | — |
| Audit valideren | ✔ | ✔ | ✔ | — | — | — |
| Self-assessment starten | ✔ | ✔ | ✔ | — | ✔ | — |
| Bevraging beheren | ✔ | ✔ | ✔ | — | ✔ | — |
| Bevraging resultaten | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Dashboard (federatie) | ✔ | ✔ | ✔ | ✔ | — | — |
| Dashboard (club) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Kennisbank raadplegen | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Chatbot gebruiken | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Rapportering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Notificatie-configuratie | ✔ | ✔ | — | — | — | — |
Elke federatie koppelt haar eigen identity provider. Het platform ondersteunt standaard OIDC en SAML protocollen. Bij eerste login via SSO wordt automatisch een platformaccount aangemaakt (JIT provisioning) met de juiste federatie-koppeling.
Wanneer een federatie geen SSO aanbiedt, is een lokale login beschikbaar met:
Het platform onderscheidt twee configuratieniveaus:
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Naam | Tekst | Ja | Naam van de organisatie |
| Beschrijving | Tekst (lang) | Nee | Omschrijving en doelstelling |
| Logo | Afbeelding | Nee | Visuele identiteit |
| Gekoppelde federaties | Relatie | Ja | Welke federaties onder deze organisatie vallen |
CRUD-operaties: Aanmaken, bekijken, bewerken, verwijderen. Bulk creatie via Excel/API. Must
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Naam | Tekst | Ja | Officiële naam federatie |
| Code | Tekst | Ja | Unieke identificatiecode |
| Logo | Afbeelding | Ja | Logo van de federatie |
| Contactgegevens | Object | Ja | E-mail, telefoon, adres, website |
| SSO-configuratie | Object | Nee | Identity provider, protocol, endpoints |
| API-configuratie | Object | Nee | Ledenbeheer endpoints, credentials, frequentie |
| Seizoenen | Relatie | Ja | Geconfigureerde seizoenen met start/einddatum |
| Kwaliteitslabels | Relatie | Nee | Beschikbare labels en hun configuratie |
| Categorieën | Relatie | Nee | Sportdiscipline-categorieën |
| Huisstijl | Object | Nee | Kleuren, logo-varianten voor white-labeling |
CRUD-operaties: Aanmaken, bekijken, bewerken, verwijderen. Export via Excel/API. Must
Federaties organiseren hun aanbod via categorieën en disciplines:
Beide entiteiten ondersteunen CRUD-operaties, bulk creatie via Excel/API Must en export Could.
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Naam | Tekst | Ja | Officiële clubnaam |
| Clubcode | Tekst | Ja | Unieke code binnen de federatie |
| Federatie | Relatie | Ja | Gekoppelde federatie(s) |
| Contactgegevens | Object | Ja | E-mail, telefoon, adres, website |
| Rechtsvorm | Keuzelijst | Nee | VZW, feitelijke vereniging, etc. |
| Ondernemingsnummer | Tekst | Nee | KBO-nummer |
| Regio | Keuzelijst | Nee | Provincie / regio |
| Disciplines | Multi-select | Nee | Actieve disciplines van de club |
| Lid sinds | Datum | Nee | Startdatum lidmaatschap federatie |
| Documenten | Bestanden | Nee | Reglementen, organigram, beleidsplan |
CRUD-operaties: Aanmaken, bekijken, bewerken, verwijderen. Bulk import via Excel/API Must, export Could.
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Naam | Tekst | Ja | Voor- en achternaam |
| Ja | Primair contactadres en login | ||
| Rol | Keuzelijst | Ja | Één van de zes rollen |
| Federatie | Relatie | Ja* | Gekoppelde federatie (* niet voor super admin) |
| Club | Relatie | Ja* | Gekoppelde club (* enkel voor clubrollen) |
| Status | Keuzelijst | Ja | Actief / Inactief / Uitgenodigd |
CRUD-operaties: Aanmaken, bekijken, bewerken, deactiveren. Bulk import via Excel Should.
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Naam | Tekst | Ja | Bijv. "Brons", "Zilver", "Goud" |
| Federatie | Relatie | Ja | Labels zijn federatie-specifiek |
| Volgorde / rang | Nummer | Ja | Hiërarchie van labels |
| Visuele asset | Afbeelding | Nee | Logo/afbeelding van het label |
| Drempelwaarde | Percentage | Ja | Minimum score om het label te behalen |
| Gewichten per rubriek | Object | Ja | Per kwaliteitsrubriek een weging |
| Geldigheid | Duur | Ja | Bijv. 2 jaar, gekoppeld aan seizoen |
CRUD-operaties: Aanmaken, bekijken, bewerken, verwijderen. Overzicht clubs per label Should. Must
Federaties kunnen datasets aanleveren via bestandsupload:
Federatie admins configureren welke events notificaties genereren en via welk kanaal:
| Kanaal | Prioriteit | Beschrijving |
|---|---|---|
| In-app notificaties | Must | Notificatiecentrum binnen het platform |
| Must | Voor kritieke events en herinneringen | |
| Push notificaties | Could | Mobiele push (latere fase) |
| Event | Ontvangers |
|---|---|
| Audit deadline nadert | Club gebruiker, Federatie gebruiker |
| Kwaliteitslabel verloopt | Club gebruiker, Federatie admin |
| Bevraging ontvangen | Club gebruiker |
| Bevraging niet afgerond (herinnering) | Club gebruiker |
| Audit gevalideerd | Club gebruiker |
| Nieuw label behaald | Club gebruiker, Federatie admin |
| Nieuwe kennisbank-content | Club gebruiker, Club lezer |
| Data-upload afgerond | Federatie admin |
| Actieplan deadline nadert | Club gebruiker |
De module "Mijn Club" is het centrale punt voor clubgebruikers. Hier beheren zij hun clubgegevens, bekijken zij data en statistieken, en volgen zij hun actieplan op. De module bevat drie tabbladen: Clubgegevens, Actieplan en Data & Statistieken.
Het clubprofiel bevat alle basisinformatie van de club, opgedeeld in secties:
| Veld | Type | Bron | Bewerkbaar door club |
|---|---|---|---|
| Naam | Tekst | Federatie/import | Nee |
| Clubcode | Tekst | Federatie/import | Nee |
| Website | URL | Club | Ja |
| Club | Ja | ||
| Telefoon | Telefoon | Club | Ja |
| Rechtsvorm | Keuzelijst | Club | Ja |
| Ondernemingsnummer | Tekst | Club | Ja |
| Adres | Adres | Club | Ja |
| Regio | Keuzelijst | Afgeleid | Nee |
| Disciplines | Multi-select | Federatie/Club | Ja |
Het actieplan biedt clubs een overzicht van concrete verbeteracties. Acties kunnen manueel aangemaakt worden of voortkomen uit AI-aanbevelingen op basis van audit-resultaten, bevragingen of benchmarks.
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Titel | Tekst | Ja | Korte beschrijving van de actie |
| Verantwoordelijke | Tekst / Relatie | Nee | Wie voert de actie uit |
| Deadline | Datum | Nee | Streefdatum voor afronding |
| Status | Keuzelijst | Ja | Open / In uitvoering / Afgerond |
| Bron | Keuzelijst | Nee | Manueel / AI-aanbeveling / Audit / Bevraging |
| Kwaliteitsrubriek | Relatie | Nee | Koppeling aan één van de 8 rubrieken |
Functionaliteit:
Dit tabblad biedt clubs inzicht in hun data, verdeeld over drie categorieën:
Vanuit elke grafiek of datapunt kan de gebruiker doordrukken naar een AI-verdieping. Een overlay toont contextuele inzichten op basis van de clubdata en beschikbare benchmarks.
De bevragingsmodule stelt clubs en federaties in staat om gestructureerde enquêtes uit te voeren bij hun leden. De module werkt als een configureerbare tool waarbij federaties sjablonen beheren en clubs bevragingen opstellen en distribueren.
Federatie admins beheren bevragingssjablonen die clubs als vertrekpunt kunnen gebruiken:
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| Naam | Tekst | Ja | Bijv. "Tevredenheid Leden", "Exit Survey" |
| Beschrijving | Tekst | Nee | Doel en context van het sjabloon |
| Vragen | Vragenlijst | Ja | Vooraf gedefinieerde vragen |
| Categorie | Keuzelijst | Nee | Koppeling aan kwaliteitsrubriek |
Aanvullend: Logboek en statistieken per sjabloon Must, tracking van niet-afgeronde bevragingen Should.
Clubs maken bevragingen aan vanuit een sjabloon of blanco (from scratch). De form builder ondersteunt:
| Type | Beschrijving |
|---|---|
| Multiple choice | Enkele of meervoudige selectie |
| Open vraag | Vrij tekstveld (kort of lang) |
| Schaal | Numerieke schaal (bijv. 1-5, 1-10) |
| Ja/Nee | Binaire keuze |
| Rangschikking | Items ordenen op prioriteit |
| Datum | Datumselectie |
| Instelling | Opties |
|---|---|
| Titel | Vrij in te vullen |
| Introtekst | Vrij in te vullen |
| Privacy | Volledig anoniem / Geanonimiseerd / Niet anoniem |
| Afzender | E-mailadres van de club |
| Geldigheid | Startdatum — einddatum |
Survey-resultaten kunnen gekoppeld worden aan het auditproces. Specifieke vragen of scores uit bevragingen worden als databron beschikbaar in de audit, zodat antwoorden niet dubbel ingevoerd hoeven te worden.
De auditmodule vormt het hart van het kwaliteitssysteem. Clubs doorlopen een gestructureerde audit om kwaliteitslabels te behalen. Het systeem ondersteunt zowel officiële audits (voor labels) als self-assessments (voor zelfinzicht).
Een audit is hiërarchisch opgebouwd en volledig configureerbaar per federatie:
| Veld | Type | Beschrijving |
|---|---|---|
| Vraagtekst | Tekst | De gestelde vraag |
| Antwoordtype | Keuzelijst | Ja/Nee, Schaal, Tekst, Multiple choice, Bestandsupload |
| Scoringregels | Object | Punten per antwoordoptie |
| Gewicht | Nummer | Weging binnen de sectie |
| Verplicht | Boolean | Moet beantwoord worden |
| Bijlage vereist | Boolean | Bewijsstuk verplicht |
| Datakoppeling | Referentie | Link naar externe data (federatiedata, survey) die het antwoord voorvult |
| Helptext | Tekst | Toelichting voor de invuller |
Auditstructuren evolueren over tijd. Het platform houdt versies bij zodat:
Een officiële audit wordt gestart door de federatie en doorloopt het volgende proces:
Clubs kunnen op eigen initiatief een self-assessment starten. Dit gebruikt dezelfde auditstructuur, maar:
Alle vorige audits en self-assessments zijn raadpleegbaar. Per audit is zichtbaar:
De kennisbank biedt clubs en federaties toegang tot gestructureerde kennis, georganiseerd rond de acht kwaliteitsrubrieken. De content wordt beheerd via een extern CMS en ontsloten via een API-integratie.
Content is georganiseerd per kwaliteitsrubriek:
| Rubriek | Contenttypes |
|---|---|
| Visie, beleid en richting | Artikels, video's, best practices |
| Bestuur en organisatiekracht | Artikels, video's, best practices |
| Materiaal en accommodatie | Artikels, video's, best practices |
| Sportief en pedagogisch aanbod | Artikels, video's, best practices |
| Trainers en begeleiding | Artikels, video's, best practices |
| Leden en groei | Artikels, video's, best practices |
| Communicatie en betrokkenheid | Artikels, video's, best practices |
| Veilige, positieve en warme clubcultuur | Artikels, video's, best practices |
| Functie | Beschrijving | Prioriteit |
|---|---|---|
| Content integratie | Ophalen en weergeven van CMS-content | Must |
| Structurering | Organisatie per rubriek en categorie | Must |
| Versiebeheer | Versies van content bijhouden | Must |
| Validatie | Content valideren op kwaliteit en relevantie | Must |
| Ranking | Content ordenen op relevantie/prioriteit | Should |
De kennisbank-content vormt de primaire grounding voor de AI-assistent. Het platform indexeert de content voor RAG (Retrieval Augmented Generation), zodat de chatbot en AI-inzichten altijd gebaseerd zijn op gevalideerde, federatie-specifieke kennis.
De AI-component is een Must en doorkruist het volledige platform. Ze manifesteert zich op drie manieren: contextuele inzichten, de chatbot, en AI-gestuurde aanbevelingen.
Op relevante plekken in het platform verschijnen AI-gegenereerde inzichten, herkenbaar aan een visueel "Inzicht"-blok. Deze inzichten zijn altijd:
| Locatie | Type inzicht | Databronnen |
|---|---|---|
| Dashboard | Samenvatting, signalering, quickstart-suggesties | Clubdata, benchmarks, audits |
| Clubprofiel | Verbeteringssuggesties (bijv. missie toevoegen) | Clubprofiel, benchmarks |
| Data & Statistieken | Trend-analyse, vergelijkingen, verdiepingen | Clubdata, benchmarks |
| Audit-resultaten | Score-analyse, correlaties, verbeterpunten | Audit-scores, benchmarks, kennisbank |
| Bevragingsresultaten | Analyse van antwoorden, trends | Survey-data, benchmarks |
| Actieplan | Aanbevolen acties op basis van data | Alle beschikbare clubdata |
De chatbot is beschikbaar als zijpaneel op elke pagina. Gebruikers stellen vragen in natuurlijke taal en krijgen antwoorden gebaseerd op:
| Functie | Beschrijving | Prioriteit |
|---|---|---|
| Q&A | Vraaggesprek op basis van beschikbare data | Must |
| Conversatie-historiek | Vorige gesprekken raadplegen | Must |
| Contextueel bewust | Chatbot weet op welke pagina de gebruiker zich bevindt | Must |
| Feedback / rating | Gebruiker kan antwoord beoordelen (nuttig/niet nuttig) | Should |
Het club-dashboard is de startpagina voor clubgebruikers. Het biedt een overzicht van:
Het federatie-dashboard biedt een geaggregeerd overzicht over alle aangesloten clubs:
Een dashboard op het niveau van de overkoepelende organisatie, met aggregatie over federaties heen. Biedt een cross-federatief overzicht voor de koepel.
| Rapport | Inhoud | Formaat | Genereerbaar door | Prioriteit |
|---|---|---|---|---|
| Audit-rapport | Scores per rubriek, totaalscore, benchmark-vergelijking, AI-inzichten | Club, Federatie | Must | |
| Bevragingsrapport | Resultaten, grafieken, verdelingen, AI-analyse | PDF / Excel | Club, Federatie | Must |
| Label-certificaat | Visuele asset van het behaalde kwaliteitslabel | PNG / PDF | Club | Must |
| Club-overzichtsrapport | Samenvatting alle clubdata per seizoen | Club, Federatie | Should | |
| Federatie-overzichtsrapport | Aggregatie over alle clubs | PDF / Excel | Federatie | Should |
| AI-samenvattingen | AI-gegenereerde inzichten geïntegreerd in rapporten | Onderdeel van rapporten | Automatisch | Should |
| Vereiste | Beschrijving | Prioriteit |
|---|---|---|
| GDPR compliance | Privacy by design in alle componenten | Must |
| Data-isolatie | Strikte tenant-isolatie op applicatieniveau; cross-federatie data enkel met expliciete configuratie | Must |
| Anonimisering surveys | Respondenten zijn anoniem tenzij anders geconfigureerd | Must |
| Data-retentie | Configureerbaar retentiebeleid per datatype met automatische opschoning | Must |
| Recht op vergetelheid | Mechanisme om persoonsgegevens te verwijderen op verzoek | Must |
| Verwerkingsovereenkomst | Tussen Plainsight en elke federatie | Must |
| Audit trail | Alle acties op data worden gelogd met gebruiker, tijdstip en actie | Must |
| Data-locatie | Hosting en dataopslag binnen de Europese Unie | Must |
| Encryptie | Data versleuteld in transit (TLS) en at rest | Must |
| EU AI Act | Transparantie, menselijke controle, logging, data-minimalisatie voor AI-componenten | Must |
| Taal | Scope | Prioriteit |
|---|---|---|
| Nederlands | Primaire taal — volledige UI, notificaties, rapporten | Must |
| Engels | Volledige UI-vertaling | Must |
| Frans | Volledige UI-vertaling | Must |
| Vereiste | Beschrijving | Prioriteit |
|---|---|---|
| Responstijd | Pagina's laden binnen 2 seconden onder normale belasting | Must |
| Multi-federatie | Platform schaalt naar meerdere federaties zonder performantieverlies | Must |
| Concurrent users | Ondersteuning voor gelijktijdig gebruik door meerdere federaties en clubs | Must |
| Vereiste | Beschrijving | Prioriteit |
|---|---|---|
| Responsive design | Mobile-friendly, desktop-first ontwerp | Must |
| Breadcrumbs & navigatie | Duidelijke navigatiestructuur en breadcrumbs | Should |
| Configuratie zonder IT | Federatie admins kunnen het platform configureren zonder technische kennis | Should |
Onderstaande matrix toont de volledige MoSCoW-classificatie per functionaliteit. Wijzigingen ten opzichte van de originele MoSCoW zijn gemarkeerd.
| Domein | Functionaliteit | Prioriteit |
|---|---|---|
| Security | GDPR compliance — Privacy by design | Must |
| Security | Security standaarden — Moderne beveiliging | Must |
| Authenticatie | SSO per federatie | Must |
| Authenticatie | Lokale login — Fallback zonder SSO | Must |
| Authenticatie | MFA — Extra beveiliging | Must |
| UX | Responsive design | Must |
| UX | Breadcrumbs & navigatie | Should |
| Performantie | Snelle responstijd | Must |
| Schaalbaarheid | Multi-federatie ondersteuning | Must |
| Configuratie | Configuratie zonder IT | Should |
| Logging | Audit trail | Must |
| Notificaties | Configureerbare notificaties per rol | Should |
| Subdomein | Functionaliteit | Prioriteit |
|---|---|---|
| Gebruikers | Gebruiker CRUD | Must |
| Gebruikers | Rollen toewijzen | Must |
| Gebruikers | Bulk import via Excel | Should |
| Organisaties | Overkoepelende organisaties CRUD | Must |
| Organisaties | Bulk creatie via Excel/API | Should |
| Organisaties | Export via Excel/API | Could |
| Categorieën | Categorieën CRUD | Must |
| Categorieën | Bulk creatie | Should |
| Categorieën | Export | Could |
| Disciplines | Disciplines CRUD | Must |
| Disciplines | Bulk creatie | Should |
| Disciplines | Export | Could |
| Federaties | Federatie CRUD | Must |
| Federaties | Federatie configuratie (SSO/API/mail) | Must |
| Federaties | Federatie export | Could |
| Clubs | Club CRUD | Must |
| Clubs | Clubprofiel beheren | Must |
| Clubs | Club activiteiten overzicht | Must |
| Clubs | Club import (bulk) | Must |
| Clubs | Club export | Could |
| Kwaliteitslabels | Labels CRUD | Must |
| Kwaliteitslabels | Visuals koppelen | Should |
| Kwaliteitslabels | Overzicht clubs per label | Should |
| Bevragingssjablonen | Templates CRUD | Must |
| Bevragingssjablonen | Logboek en statistieken | Must |
| Bevragingssjablonen | Tracking niet-afgeronde bevragingen | Should |
| Audit configuratie | Audit structuur (secties + vragen) | Must |
| Audit configuratie | Scores & gewichten per label | Must |
| Audit configuratie | Versiebeheer | Must |
| Audit configuratie | Datakoppeling per vraag | Must |
| Data | Data upload (CSV/XLS) | Must |
| Data | API koppelingen | Should |
| Data | Statistieken per dataset | Should |
| Subdomein | Functionaliteit | Prioriteit |
|---|---|---|
| Knowledgebase | Content integratie (CMS) | Must |
| Knowledgebase | Structurering van content | Must |
| Knowledgebase | Versiebeheer | Must |
| Knowledgebase | Validatie van content | Must |
| Knowledgebase | Ranking van content | Should |
| Bevragingen | Bevraging opzetten (sjabloon of scratch) | Must |
| Bevragingen | Bevraging versturen (distributie) | Must |
| Bevragingen | Resultaten bekijken (incl. AI insights) | Must |
| Bevragingen | Herinneringen | Should |
| Bevragingen | Realtime statistieken | Should |
| Bevragingen | Export resultaten | Should |
| Audit | Audit starten (officieel) | Must |
| Audit | Self-assessment | Must |
| Audit | Audit opslaan (tussentijds) | Must |
| Audit | Audit invullen (vragen beantwoorden) | Must |
| Audit | Audit valideren (federatie controle) | Must |
| Audit | Audit resultaten (scores + labels + AI + benchmarks) | Must |
| Audit | Bijlages (bewijsstukken) | Must |
| Audit | AI-ondersteuning tijdens audit | Could |
| Audit | Notificaties (labels, deadlines) | Should |
| Dashboards | Club-dashboard | Must |
| Dashboards | Federatie-dashboard | Must |
| Dashboards | Organisatie-dashboard | Should |
| Dashboards | Benchmarking | Should |
| Dashboards | AI-inzichten | Must |
| Chatbot | Q&A op data | Must * |
| Chatbot | Feedback / rating | Should |
| Chatbot | Governance & monitoring | Should |
| Rapportering | Rapport export (PDF/overzicht) | Must |
| Rapportering | Samenvattingen / inzichten | Should |
| Actieplan | Actieplan beheren (CRUD) | Must * |
De mockups tonen het platform vanuit het perspectief van een clubgebruiker (Marc Verhaegen, Racing Swimming Club Mechelen, Zwemfed). Ze illustreren de beoogde gebruikerservaring en dienen als visuele referentie voor het ontwerp.
De mockups tonen een consistente navigatiestructuur:
Bovenin: Seizoenselector, federatielogo, clubnaam
Onderin: Gebruikersprofiel met rol, afmeldknop
Een opvallend blok met gekleurde achtergrond dat AI-gegenereerde inzichten toont. Bevat een icoon, inzichttekst en optioneel een "Verdiep"-knop die doorlinkt naar de chatbot of een detail-overlay.
Lijngrafieken met twee lijnen: clubdata (primair) en benchmark (secundair). Maandelijkse weergave per seizoen. Interactief: klikken opent een AI-verdieping.
Bij de audit: percentage-balk per rubriek met visuele indicator van de afwerkingsgraad.
Subtiele meldingen die clubs aanmoedigen ontbrekende data aan te vullen, met directe link naar het betreffende veld.
Waar Hoofdstuk 2 — Architectuuroverzicht het functionele model beschrijft (multi-tenancy, seizoen, databronnen, integraties), zoomt dit hoofdstuk in op de technische solution-architectuur: hoe het platform concreet gebouwd, gehost en beheerd wordt. Het beschrijft een referentiearchitectuur op Microsoft Azure — multi-tenant, EU-gehost en opgebouwd uit open standaarden. De keuzes hieronder zijn een onderbouwde startpositie; de definitieve invulling wordt samen met de federaties verfijnd in Fase 0 (Discovery & setup).
De solution-architectuur is geen vrijblijvend tekentafelontwerp: ze is opgebouwd uit bewezen, open bouwstenen — Next.js + PostgreSQL — die we ook gebruiken voor het klikbare prototype dat we op de volgende kennismaking tonen. Dezelfde bouwstenen schalen één-op-één mee naar Azure — geen herbouw, geen vendor lock-in.
Het platform is opgebouwd in vier functionele lagen met een doorlopende laag voor governance & security. Verkeer stroomt van de gebruiker via de edge naar applicatie, AI en data:
| Component | Azure-dienst | Rol |
|---|---|---|
| Edge & bescherming | Front Door + WAF | CDN, TLS-terminatie, DDoS- en Web Application Firewall-bescherming aan de rand van het platform |
| Identiteit | Entra External ID (B2C) | SSO (OIDC/SAML) per federatie, MFA en lokale login als fallback — zie Hoofdstuk 3 |
| Component | Azure-dienst | Rol |
|---|---|---|
| Web & API | Container Apps | Next.js-frontend en REST/GraphQL-API in containers; autoscaling op basis van belasting |
| Integratie-gateway | API Management | Centrale in- en uitgaande gateway voor externe integraties met throttling, policy en versiebeheer |
| Achtergrondtaken | Azure Functions | Imports, synchronisatie, retentie-opschoning en notificaties als event-gedreven jobs |
| Component | Azure-dienst | Rol |
|---|---|---|
| Taalmodel | Azure OpenAI | Chatbot, AI-inzichten en aanbevelingen — zie Hoofdstuk 9 |
| Kennisontsluiting | Azure AI Search | RAG: vector-index op de kennisbank zodat antwoorden gegrond zijn in federatiecontent |
| Guardrails | AI Content Safety | Inhoudsfiltering en data-minimalisatie; alle AI-interacties worden gelogd en zijn traceerbaar |
| Component | Azure-dienst | Rol |
|---|---|---|
| Relationele data | Azure Database for PostgreSQL (Flexible Server) | Kerngegevens, multi-tenant met seizoen als kernentiteit — zie Hoofdstuk 2 |
| Bestanden | Blob Storage | Documenten, uploads en exports |
| Cache & sessies | Cache for Redis | Sessiebeheer en snelle respons op veelgevraagde data |
Alle externe koppelingen lopen per federatie via API Management (laag 2), met een uniforme CSV/XLS-upload als fallback wanneer geen API beschikbaar is. Dit sluit aan op het integratiemodel uit Hoofdstuk 2.4.
| Integratie | Richting | Doel | Fallback |
|---|---|---|---|
| Federatie-IdP's | Inbound | SSO/MFA (Azure AD B2C bij Gymfed e.a.) | Lokale login met MFA |
| Ledenbeheer-API's | Inbound | Leden, trainers, diploma's, clubregistraties | CSV/XLS-upload met validatie |
| Kennisbank-CMS | Inbound | Artikels & richtlijnen → RAG-index (laag 3) | Handmatige content-import |
| Data-export | Outbound | Export in CSV, JSON en PDF | — |
Een transversale laag waakt over alle vier de lagen heen. Beveiliging en observability zijn ingebouwd, niet achteraf toegevoegd.
De organisatiehiërarchie uit Hoofdstuk 2.1 (koepel → federatie → club) wordt technisch afgedwongen op applicatieniveau: elke databasequery draagt een verplicht tenant-filter, geïnjecteerd vanuit de geauthenticeerde sessie. Cross-federatie data is enkel toegankelijk met expliciete configuratie.
Eén gedeelde PostgreSQL-instantie met tenant-scheiding per rij. Kostenefficiënt, eenvoudig te onderhouden en de gekozen standaard voor de uitrol.
Een federatie met strengere eisen kan een eigen database of schema krijgen, zonder impact op de applicatiecode — de tenant-laag blijft identiek.
Drie gescheiden omgevingen, volledig beschreven in code (Bicep) en uitgerold via geautomatiseerde pijplijnen. Container Apps maakt veilige releases mogelijk via revisies en geleidelijke uitrol.
| Omgeving | Doel | Data |
|---|---|---|
| Development | Actieve ontwikkeling per sprint | Synthetische testdata |
| Test / Acceptatie | Sprintdemo's en validatie door de stuurgroep | Geanonimiseerde of synthetische data |
| Productie | Live gebruik door federaties en clubs | Echte data, EU-gehost & versleuteld |
De architectuur vertaalt de niet-functionele vereisten uit Hoofdstuk 11.3 naar concrete mechanismen:
| Eigenschap | Mechanisme | Doel |
|---|---|---|
| Schaalbaarheid | Autoscaling van Container Apps; nieuwe federaties als extra tenants | Meeschalen zonder performantieverlies |
| Performantie | Redis-cache, CDN via Front Door, geoptimaliseerde queries | Pagina's binnen 2 seconden onder normale belasting |
| Beschikbaarheid | Beheerde Azure-diensten met ingebouwde redundantie | Hoge beschikbaarheid voor gelijktijdig gebruik |
| Herstel | Azure Backup met point-in-time herstel; IaC voor heropbouw | Voorspelbaar herstel bij incidenten |
De technische keuzes zijn bewust gericht op geen lock-in. Dit operationaliseert de eigendomsprincipes uit Hoofdstuk 2.5:
| Principe | Technische verankering |
|---|---|
| Open standaarden | Next.js, PostgreSQL, containers en open protocollen (OIDC/SAML, REST/GraphQL) |
| Reproduceerbaarheid | Volledige infrastructuur als Bicep-code in een Git-repository |
| Data-export | Alle data exporteerbaar in CSV, JSON en PDF |
| Eigendom | Intellectueel eigendom en Azure-tenant berusten bij de federaties (gezamenlijk) |
| Exit | Volledige overdracht aan een andere technische partner binnen drie maanden |