Belgische Go-vereniging
Juni 2026
De AI (Claude, ontwikkeld door Anthropic) diende alsinstrument voor versnelde ontwikkeling, niet als besluitvormer. Elke functionaliteit is:
Gespecificeerd door Yannick Kuy (bestek, architectuurkeuze, ontwerpbeslissingen)
Gegenereerd door Claude onder direct toezicht
Nagezien en gevalideerd door Yannick vóór elke commit
Handmatig getest (en voor het ELO-systeem, door 47 geautomatiseerde tests)
De AI implementeert niets zelfstandig. Elke regel code in productie is door een mens goedgekeurd. De geproduceerde code is standaard TypeScript, leesbaar voor elke webontwikkelaar, zonder afhankelijkheid van Claude voor toekomstig onderhoud.
Git (GitHub): volledige geschiedenis van elke wijziging met datum, beschrijving en auteur
Elke commit gaat vergezeld van een bericht waarin wordt uitgelegd waarom de wijziging is aangebracht
De code wordt gehost op een privé-GitHub-repository — toegankelijk voor elke ontwikkelaar die later wordt aangesteld
MaatregelDetailsWachtwoordenGehasht met bcrypt (factor 12) — nooit in leesbare vorm opgeslagenMislukte pogingenAutomatische blokkering na 5 mislukte pogingen, ontgrendeling na 15 minutenSessiesServer-side ondertekende JWT, automatisch verlopenResetLink via e-mail, slechts 1 uur geldigVerplichte complexiteitMinimaal 8 tekens, hoofdletter + cijfer verplicht
Gevoelige gegevens (e-mail, telefoonnummer, adres, geboortedatum) opgeslagen in Supabase (PostgreSQL op AWS eu-central-1, in Europa)
Vercel (webserver) slaat nooit gegevens op — het voert de code uit en stuurt de verzoeken door naar Supabase
Verkeer : HTTPS verplicht op alle pagina's, gegevens worden nooit onversleuteld verzonden
Geheime sleutels uitsluitend opgeslagen in de Vercel-omgevingsvariabelen — nooit in de broncode, nooit in Git
Elke actie op de server controleert de rol van de aangemelde gebruiker. Een PRESIDENT kan alleen handelingen verrichten met betrekking tot de leden van zijn club. Een MEMBER kan alleen zijn eigen profiel wijzigen. Het is onmogelijk om de eigen rechten te verhogen.
Verzoek tot verwijdering toegankelijk via het profiel van elk lid
Volledige anonimisering: de naam wordt "Anonieme speler-xxx", het e-mailadres wordt vervangen door een willekeurig adres, alle persoonsgegevens worden gewist
De sportgeschiedenis (wedstrijden, resultaten) blijft bewaard — verplichting tot sportieve integriteit
Pagina met privacybeleid beschikbaar op de website (/privacy)
Geen tweefactorauthenticatie (2FA) — geacht onevenredig voor een go-bond, maar implementeerbaar indien vereist
Geen externe beveiligingsaudit — aanbevolen vóór een algemene productielancering
Elke full-stack webontwikkelaar die bekend is met:
Next.js (React) — 's werelds populairste framework voor webapplicaties, gebruikt door duizenden bedrijven
PostgreSQL — standaard relationele database
TypeScript — JavaScript met statische typering
De code bevat geen exotische of propriëtaire technologieën. Een bekwame ontwikkelaar kan er binnen een paar dagen in komen.
De npm-afhankelijkheden (bibliotheken) kunnen beveiligingspatches ontvangen. De procedure is:
npm audit # kwetsbaarheden identificeren npm update # kleine afhankelijkheden bijwerkenAanbevolen: maandelijks controleren, vooral voor NextAuth (authenticatie) en Prisma (DB-toegang).
Het kantoor kan wijzigingen aanbrengen zonder de code aan te raken:
✅ Nieuws, evenementen, pagina's van de website
✅ Navigatiemenu (zijbalk)
✅ Foto's van clubs en toernooien
✅ Contributies, stemrechten van leden
✅ Toernooiresultaten
Vereist een ontwikkelaar:
Nieuwe functionaliteiten
Wijzigingen in het databaseschema
Veranderingen in de infrastructuur
Databasemigraties worden van versies voorzien in de code (prisma/migrations/). Elke wijziging in het schema wordt bijgehouden en is reproduceerbaar. Het is mogelijk om terug te gaan naar elke versie.
Supabase voert automatische dagelijkse back-ups uit (point-in-time recovery gedurende 7 dagen in het gratis abonnement). In geval van een ernstig probleem kunnen de gegevens worden hersteld naar elke gewenste toestand van de afgelopen 7 dagen.
Risico | Waarschijnlijkheid | Impact | Beperking |
|---|---|---|---|
Storing | Laag (99,9% waargenomen beschikbaarheid) | Tijdelijk | Geen actie vereist voor dit volume |
Tariefwijziging | Gemiddeld (gratis pakket, geen SLA) | Laag tot gemiddeld | Overstappen naar een andere host mogelijk in < 1 dag |
Stopzetting van de dienst | Zeer laag | Hoog | De code kan worden geïmplementeerd op Netlify, Railway of een VPS worden geïmplementeerd binnen enkele uren |
Juridisch grijs gebied : het Hobby-abonnement van Vercel is strikt voorbehouden aan niet-commerciële projecten. Een vzw die contributies int, bevindt zich in een grijs gebied. Vercel controleert dit niet actief, maar de overstap naar het Pro-abonnement ($20/maand) zou dit theoretische risico wegnemen.
Risico | Waarschijnlijkheid | Impact | Beperking |
|---|---|---|---|
Storing | Zeer laag (AWS eu-central-1) | Tijdelijk | Geen actie vereist |
Overschrijding van de gratis quota (500 MB) | Laag | Laag | Momenteel < 50 MB; overstappen naar het Pro-abonnement (25 $/maand) indien nodig |
Beëindiging van de dienst | Zeer laag | Hoog | Standaard PostgreSQL-export mogelijk naar elke andere DB-host |
Next.js is ontwikkeld door Vercel en wordt gebruikt door bedrijven als TikTok, Twitch en honderdduizenden projecten. Het risico op stopzetting is vrijwel nihil. Grote updates (om de ~18 maanden) vereisen een migratie, die doorgaans goed gedocumenteerd is.
De code is niet afhankelijk van Claude om te functioneren of te worden onderhouden. Claude was een ontwikkelingshulpmiddel, zoals een IDE of een linter. Een menselijke ontwikkelaar kan het project overnemen zonder ooit AI te gebruiken.
Dat gezegd hebbende, is het gebruik van een AI-assistent voor toekomstige wijzigingen perfect denkbaar — het is inmiddels gangbare praktijk in de industrie, ook in kritieke contexten.
Korte termijn (< 1 maand): de site werkt zelfstandig, er is geen tussenkomst nodig voor de dagelijkse werking.
Middellange termijn: elke Next.js-ontwikkelaar kan het project overnemen. De commits zijn voorzien van commentaar en de kritieke functies (ELO, anonimisering, bijdragen) zijn gedocumenteerd. De rest van de code is weinig van commentaar voorzien — een technisch rapport waarin de algemene architectuur wordt beschreven, is gepland om deze leemte op te vullen.
Overdracht van verantwoordelijkheid vereist:
Toegang tot de GitHub-repository (uitnodiging om over te dragen in < 5 minuten)
Toegang tot het Vercel-dashboard (uitnodiging per e-mail)
Toegang tot het Supabase-project (uitnodiging per e-mail)
Omgevingsvariabelen (.env-bestand veilig verzonden)
| Dienst | Huidige kosten | Gratis limiet | Kosten bij overschrijding |
|---|---|---|---|
| Vercel | 0 €/jaar | 100 GB bandbreedte/maand | ~20 $/maand (Pro) |
| Supabase | 0 €/jaar | 500 MB DB, 1 GB opslagruimte | ~25 $/maand (Pro) |
| Opnieuw verzenden (e-mails) | 0 €/jaar | 3.000 e-mails/maand | ~20 $/maand |
| TOTAAL | 0 €/jaar | - | ~65 $/maand max |
Voor een federatie met ~500 leden zullen de gratis limieten de komende 2-3 jaar niet worden bereikt. Het meest waarschijnlijke scenario waarbij de limieten worden overschreden, betreft de Supabase-opslag als er veel foto's van clubs/toernooien worden geüpload.
De huidige architectuur op Vercel maakt gebruik van serverloze functies: de server "wordt wakker" bij elk verzoek na enkele minuten inactiviteit, wat een vertraging van 500 ms tot 2 seconden veroorzaakt bij het eerste bezoek. Dit gedrag is inherent aan het serverless-model en kan niet worden verholpen zonder van hostingprovider te veranderen.
Voor een soepele gebruikerservaring (< 100 ms op alle pagina's) is een migratie naar een persistente server een optie:
OptiePrijsLatentieMigratie-inspanningVercel (huidig)0 €/jaar500 ms–2 s (cold start)—Railway~5 $/maand100–200 ms (zonder cold start)1–2 dagenRender~7 $/maand100–200 ms (zonder cold start)1–2 dagen
Supabase blijft in beide gevallen ongewijzigd — alleen de host van de site verandert. De migratie is op elk moment omkeerbaar.
Het onderhoud toevertrouwen aan de huidige ontwikkelaar (Yannick Kuy) via een jaarlijkse onderhoudsovereenkomst. Als auteur van het project kent hij de volledige code en kan hij snel ingrijpen bij bugs of ontwikkelingen. Een bescheiden maandelijkse vergoeding (te onderhandelen) garandeert de continuïteit van het project zonder een beroep te doen op een externe dienstverlener die zich eerst in de code zou moeten inwerken. Dit is de meest efficiënte en goedkoopste oplossing voor de federatie.
Toegangsmogelijkheden documenteren: wie heeft de inloggegevens voor Vercel, Supabase, GitHub, Resend — en zorg voor een procedure voor het doorgeven ervan in geval van wijzigingen, ongeacht wie het onderhoud verzorgt.
Een beveiligingsaudit uitvoeren (gratis tool OWASP ZAP) voordat de site voor het grote publiek wordt opengesteld.
Beslissen over de hosting: bij Vercel blijven (gratis, cold start van ~1 s) of migreren naar Railway (~5 $/maand, vloeiende navigatie). Zie paragraaf 5.
Stel een jaarlijks budget op voor infrastructuur + onderhoud:
Scenario | Infrastructuur | Onderhoud | Geschatte totaalprijs |
|---|---|---|---|
Minimaal (gratis Vercel) | 0 € | te onderhandelen | volgens afspraak |
Comfortabel (Railway + Supabase Pro) | ~40 $/maand | te onderhandelen | volgens afspraak |
Document opgesteld in juni 2026 — gobel-site