Oefenen voor het theorie-examen, als een spel met een eerlijke slaagkans
Een iOS- en Android-app voor het theorie-examen auto: korte rondes met punten en een wekelijks klassement, terwijl de slaagkans bewust eerlijk blijft.


Het probleem
Leerlingen zijn zenuwachtig voor het theorie-examen, oefenen in korte stukjes op hun telefoon, en een herexamen kost geld. Bestaande oefenapps voelen als studeren of als een gekocht template.
Wat ik bouwde
Elke vraag wordt een snelle ronde met punten, combo's, levels, een dagelijkse reeks en een wekelijks klassement, terwijl één getal, de slaagkans, bewust eerlijk blijft. Fouten komen via spaced repetition terug in een eigen wachtrij.
De app werkt offline, want alle vragen en beelden zitten erin, en synchroniseert de voortgang met een eigen backend zodra je inlogt. De vragenbank: 2.616 vragen, samengevoegd, ontdubbeld en gecontroleerd in 26 categorieën.
Wat er technisch toe doet
Een klassement waar valsspelen niet loont
De app rekent de punten zelf uit voor de animatie, maar de server leidt uit dezelfde regels af wat een ronde hoogstens kan opleveren. Een aangepaste app kan nooit meer insturen, en de weekgrens volgt de echte tijdzone, ook rond zomertijd.
Offline eerst, zonder dubbel tellen
Een afgeronde ronde wordt eerst op de telefoon vastgelegd en wacht in een begrensde wachtrij tot de server hem aanneemt. Dezelfde ronde opnieuw sturen doet niets, dus een nieuwe poging telt nooit twee keer.
Synchroniseren tussen apparaten zonder verlies
Voortgang reist mee met een versienummer; een verouderde write wordt opnieuw opgehaald en samengevoegd. Oefensessies zijn feiten met een eigen id, dus twee apparaten voegen samen zonder dat totalen verdwijnen of verdubbelen.
Eigen controle van in-app-aankopen
De server controleert aankopen uit de App Store en Google Play zelf, en één unieke sleutel per transactie voorkomt dat dezelfde aankoop twee keer premium oplevert. Een tweede betaalrail via Mollie geeft toegang via dezelfde functie, zodat beide nooit uit elkaar lopen.
Een API die niemand anders laat meekijken
Het sessietoken bepaalt wie je bent; de app stuurt geen eigen gebruikers-id mee. Daarbij bcrypt voor wachtwoorden, rate limits per route en unieke bijnamen met een lijst gereserveerde namen.
Verkeerssituaties uit een beschrijving
Een kleine JSON-beschrijving van een verkeerssituatie wordt in Blender als exacte opstelling gerenderd, in 30 stijlen zoals nacht en regen. Dit is een prototype, getest op 30 vragen.
Meetstaat
Geteld in de repository, niet geschat.
- vragen, samengevoegd en gecontroleerd
- 2.616
- categorieën
- 26
- schermen in de app
- 12
- testcases in app en server
- 566
- databasetabellen
- 7
Hoe gemeten
python3: len(json.load(open('src/data/questions.json')))
python3: len(json.load(open('src/data/categories.json')))
find src/app -name '*.tsx' ! -name '_layout.tsx' ! -name '+*' | wc -l
grep -rn "it(\|test(" server/test src --include=*.ts --include=*.tsx | wc -l
grep -c "pgTable(" server/src/db/schema.tsGemeten op 27-10-2026 in de eigen repository.
Schermen

Iets vergelijkbaars nodig, of een team dat zo'n systeem bouwt?
info@bitvire.com