Multi-tenant Learning Management System

Uitgevoerd in opdracht van een opdrachtgever in de onderwijssector — broncode onder geheimhouding

In opdracht van een opdrachtgever in de onderwijssector heb ik een volledig schaalbaar, multi-tenant Learning Management Systeem ontworpen en gebouwd. Het platform bedient meerdere onderwijsorganisaties tegelijk binnen één gedeelde infrastructuur, met volledige data-isolatie per organisatie en een geavanceerd rol- en rechtensysteem.

Het systeem is end-to-end opgezet — van database-architectuur en beveiligingslagen tot API en gebruikersinterface — en draait in productie. De volledige broncode is eigendom van de opdrachtgever en valt onder een geheimhoudingsovereenkomst; onderstaande beschrijving richt zich daarom op functionaliteit, architectuur en technische keuzes.

Belangrijkste functionaliteiten

  • Multi-tenant architectuur met strikte data-isolatie per organisatie
  • Uitgebreide rollenhiërarchie: super-admin, content-manager, admin, docent, leerling, ouder
  • Volledig cursusbeheer met hiërarchische opbouw (cursus → secties → units → lessen)
  • Lesmateriaal-editor met rich-text, leerdoelen, slides en evaluaties
  • Examenmodule met vragenbank, automatische grading, toewijzing per klas en gedetailleerde resultatenrapportage
  • Klassenbeheer inclusief voortgangstracking per klas per cursus
  • Licentiesysteem voor toegangsbeheer met geautomatiseerde verloop-afhandeling
  • Materialenbibliotheek en documentbeheer met cloud-opslag
  • Feedbackmechanismen, auditlogging en soft-delete met retentiebeleid

Beveiliging & compliance

  • Dubbele authenticatielaag (API-sleutel + JWT)
  • Row-Level Security op database-niveau voor multi-tenant isolatie
  • End-to-end versleuteling van alle bedrijfskritieke data at rest (AES-256 via pgsodium) — zowel intellectueel eigendom, persoonsgegevens als assessment-data
  • GDPR-compliant met aparte encryptiesleutels per datacategorie
  • CAPTCHA-bescherming, rate limiting, IP-threat-blocking, strikte CORS- en CSP-headers
  • Request-scoped database clients om sessie-lekken te voorkomen

Tech stack

  • Frontend: Nuxt 3, Vue 3 (Composition API), Nuxt UI, TailwindCSS, Tiptap rich-text editor
  • Backend: Node.js, Express.js (ES Modules), Joi-validatie, Winston logging
  • Database: PostgreSQL via Supabase, Row-Level Security, secure views met INSTEAD OF-triggers, pgsodium encryptie
  • Infrastructuur: gecontaineriseerde deployment, geautomatiseerde cron-jobs voor licentie-expiratie, log-cleanup, soft-delete-purge en threat-list-updates
  • Externe integraties: Cloudflare Turnstile, AbuseIPDB, Google Analytics

Omvang

Productie-omgeving met ruim 30 database-tabellen, 125+ database-migraties, circa 40 API-controllers, 30+ business-logic-modules, 90+ UI-componenten en 33 Vue composables.

Mijn rol

Volledige verantwoordelijkheid voor architectuur, ontwikkeling en oplevering — databaseontwerp, API-design, frontend-implementatie, beveiliging en deployment. Nauwe samenwerking met de opdrachtgever voor functionele afstemming en iteratieve oplevering.