Backend-architectuur¶
Let op: de gedetailleerde backend-architectuur is uitvoerig technisch en wordt onderhouden in het Engels. Voor de actuele controller-, service- en background-job-implementatie-details, raadpleeg de Engelse backend-architectuur.
Inleiding¶
De IntroVox-backend is een standaard Nextcloud-PHP-app met:
- Controllers voor REST-endpoints (admin, public, license, personal)
- Services voor business-logica (telemetrie, licentie-validatie)
- Background-jobs voor periodieke taken (telemetrie-verzending, licentie-sync)
- Settings-integratie voor Nextcloud-instellingen-pagina's
Component-categorieën¶
Controllers¶
| Controller | Doel |
|---|---|
AdminController |
Stappen-CRUD, talen-management, globale instellingen, export/import |
ApiController |
Publieke endpoints (getWizardSteps, tracking-events) |
LicenseController |
Enterprise-subscription-validatie |
PersonalController |
Per-gebruiker permanent-uitschakelen-voorkeur |
Services¶
| Service | Doel |
|---|---|
TelemetryService |
Aggregeert anonieme gebruiks-stats; verzendt naar licenses.voxcloud.nl |
LicenseService |
Valideert subscription-keys, HTTP-response-validatie |
Background-jobs¶
| Job | Cadans | Doel |
|---|---|---|
TelemetryJob |
Dagelijks | Verzendt geaggregeerde stats naar licentie-server |
LicenseUsageJob |
Dagelijks (met stabiele jitter) | Synct licentie-staat en stap-limieten |
Settings-integratie¶
AdminSettings— Nextcloud-admin-instellingen-paginaPersonalSettings— per-gebruiker-instellingen-paginaAdminSection/PersonalSection— sidebar-navigatie
Event-listeners¶
LoadScripts— laadt frontend-bundles op elke Nextcloud-pagina
Opslag-conventies¶
- Globale config:
oc_appconfig(wizard_enabled,enabled_languages,wizard_version,wizard_steps_<lang>) - Per-gebruiker:
oc_preferences(introvox/permanent_disable, telemetrie-timestamps) - Geen custom database-tabellen
Veiligheids-patronen¶
- CSRF-bescherming op alle state-changing endpoints (v1.5.0+)
- Defensieve
IGroupManager::isAdmin()-checks naast annotation-based authorization OCP\Util::sanitizeHTMLop stap-title/textbij save/import (v1.5.0+)- Server-side groep-filtering — verborgen stappen verlaten nooit de server
- Defensieve
is_array()-guard tegen corrupte appconfig-blobs (v1.4.3+)
Voor de complete referentie¶
Zie backend-architecture.en.md voor:
- Per-controller-method-handtekeningen
- Service-methode-details en HTTP-call-patterns
- Background-job-scheduling en jitter-strategie
- Authorization-pipeline (annotations + defensive checks)
- Telemetrie-payload-structuur en privacy-grenzen
Zie ook¶
- Architectuur-overzicht — systeem-design
- Frontend-architectuur — Vue-client
- API-referentie — REST-endpoints
- Transifex-integratie — l10n-workflow