// Onder de motorkap

    Hoe Joulo gebouwd is

    Wat we waar bewaren, hoe laadsessies en uitbetalingen controlegevoelig blijven, en wie op een gegeven moment bewijs kan vragen • zonder opsmuk.

    Per-rij toegangscontrole
    Versleutelde IBAN
    Alleen-toevoegen auditlog
    Op NEa-lijst

    Een korte uitleg van de techniek achter Joulo: waar je gegevens staan, hoe we ERE-credits kunnen onderbouwen en wie meekijkt.


    In het kort

    Joulo rust op twee gescheiden lagen:

    • Voorkant een edge-netwerk (Cloudflare) dat de site, het dashboard en het verkeer naar je laadstation afhandelt: dichtbij jou, dichtbij waar het laden gebeurt.
    • Achterkant een PostgreSQL-database in een Europees datacenter voor accountgegevens, laadsessies en uitbetalingen.

    Elke sessie, elke registratie en elke uitbetaling laten we terug te herleiden niet uit hobbyisme, maar omdat de NEa, een externe auditor en jijzelf er op een gegeven moment naar kunnen vragen.

    Wil je zien wat er live gebeurt op het platform (deploys, codevolume, counters)? Kijk op /status. Het uitgebreidere vier-lagenplaatje staat op /platform.


    Waar staat je data

    WatWaarWie kan erbij
    Account, e-mail, instellingenDatabase in een Europees datacenterJij, met je inlog. Wij alleen voor support na jouw verzoek.
    Laadsessies (datum, kWh, laadstation)IdemIdem.
    IBAN voor uitbetalingVersleutelde kluis, los van de databaseAlleen de uitbetalingsroutine kan dit gebruiken met de juiste sleutel niet zichtbaar als platte tekst in je accountrecord.
    Tokens van je gekoppelde account bij een laadmerkIdemIdem.
    Foto's van je MID-meterPrivé-opslagAlleen jij, via tijdelijke links (1 uur geldig).
    Ruwe OCPP-berichten van je laadstationAlleen-toevoegen archiefAudit-bewijs; inhoudelijk niet door ons aan te passen.

    We bewaren niets wat we niet nodig hebben voor registratie, uitbetaling of ondersteuning. IBAN en tokens leven niet naast je overige profielvelden in platte vorm.


    Hoe we ERE-credits onderbouwen

    ERE-credits vertegenwoordigen waarde. Waarde moet zich laten verantwoorden. Daarom leggen we elke relevante laadsessie vast op twee plekken:

    1. Werklaag de database, met mutatiegeschiedenis. Hier rekenen we mee; hier zie jij je sessies in het dashboard (per laadstation en met bronlabel).
    2. Archief een alleen-toevoegen laag. Geen achteraf edit voor wie dan ook.

    Als de NEa of een auditor vraagt om onderbouwing, zetten we beide naast elkaar. Zonder bewijs geen registratie, zonder correcte registratie geen uitbetaling zo hoort het bij een inboekdienstverlener.

    In het dashboard zie je per sessie hoe de meting is binnengekomen:

    • 🟢 Server-geverifieerd gemeten via onze eigen OCPP-koppeling met je laadstation.
    • 🟡 Geïmporteerd aangeleverd via een gekoppelde API (Tesla, Easee, Wallbox, Zaptec, V2C, 50five, Plugchoice, …).
    • Handmatig door jou ingevoerd; lager vertrouwensniveau voor downstream-validatie.

    MID: onder de Regeling energie vervoer verschilt het vereiste bewijs per laadpunt-categorie. Voor typische net-lading met levering aan een gemeten leverpunt hoort een geregeld meetinstrument (in de praktijk: MID-certificering waar dat van toepassing is). Die grens zit strak in het product: zonder die meter niet ineens “gewoon toch ERE” zie ook /wat-zijn-eres en de artikelen in /kennisbank.


    OCPP: drie dingen die voor jou uitmaken

    Laadstations die rechtstreeks met ons praten via OCPP 1.6J hangen op onze eigen Central System (CSMS), op hetzelfde edge-netwerk als de rest van Joulo. Drie garanties:

    1. Eigen proces per laadstation elk laadpunt krijgt een eigen vast proces aan de rand van het netwerk. Geen gedeelde verbinding of geheugen met andere klanten. Tussen berichten door slaapt het proces bij inkomend verkeer wordt het wakker.
    2. Niets kwijt bij DB-onderhoud inkomende berichten gaan eerst naar een lokale wachtrij (outbox), daarna naar Supabase. Loopt de database even vast, dan groeit de wachtrij mee en wordt alsnog verwerkt. Berichten hebben een idempotency-sleutel duplicaten worden niet dubbel geboekt.
    3. Elk frame wordt weggeschreven naast de tabellen bewaren we elk in- en uitgaand OCPP-frame als los bestand in een alleen-toevoegen archief (o.a. warme retentie ±13 maanden, daarna cold storage).

    Van StartTransaction via MeterValues tot StopTransaction kun je het traject per sessie reconstrueren twee onafhankelijke sporen (database + framearchief).


    Wie ziet wat

    De database handhaaft per rij wie data mag zien. Jouw sessies en gekoppelde gegevens komen niet bij een andere gebruiker terecht, ook niet als er ergens een fout in de frontend sluipt het beleid zit in Postgres (RLS), niet alleen in de browser.

    Voor beheerders geldt een aparte rolstructuur; relevante acties schrijven we weg in een aparte audit-tabel.


    Beveiliging aan de rand

    • Firewall en regels aan de rand van het netwerk filteren schadelijk verkeer.
    • Botbeleid: scrapers en misbruik worden tegengehouden; gangbare zoekmachine-crawlers en een beperkte set AI-crawlers kunnen expliciet worden toegelaten.
    • Partners en API-gebruikers: OAuth 2 met scopes en rate limits per token.
    • Wachtwoorden worden gehasht; inloggen kan ook met een magic link.
    • Geen wachtwoorden, tokens of IBAN's in applicatielogs.

    Wie controleert ons

    • NEa Joulo B.V. staat sinds 2 februari 2026 op de officiële lijst van inboekdienstverleners. De REV-rekening voor technische indiening is een aparte stap na erkenning als inboekdienstverlener.
    • Capptions compliance-softwarepartner; auditspoor onder ERE-claims.
    • Externe auditor bij de eerste batch en daarna jaarlijks.
    • Jij in het dashboard zie je sessies en uitbetalingen tot op kWh-niveau.

    Opzeggen, exporteren, account sluiten

    • Opzeggen in het dashboard. Jaarcontract: jaarlijks opzegbaar (Wet van Dam). Geen opzegkosten.
    • Exporteren sessies en uitbetalingen als CSV of JSON.
    • Account sluiten zelf te doen zolang er nog geen ERE-registraties namens jou bij de NEa zijn ingediend die een retentieplicht geven. Is dat wél gebeurd, dan sluiten we het account en minimaliseren we persoonsgegevens tot wat de wet en de audittrail vereisen; de registratiehistorie blijft beschikbaar voor toezicht.

    Meer over het bedrijf en het team: /over-joulo.
    Compatibiliteit van je hardware kun je checken via /check-laadstation.


    Korte samenvatting

    OnderdeelWat
    Marketing + dashboardSSR via React Router 7; ingelogd deel als SPA
    VoorkantCloudflare-edge; eigen CSMS-proces per laadstation voor OCPP
    AchterkantPostgreSQL in de EU, RLS per rij, plus alleen-toevoegen audit-archief
    Mobiele appiOS en Android, dezelfde backend
    ProtocollenOCPP 1.6J onder eigen beheer
    CloudkoppelingenTesla, Easee, Wallbox, Zaptec, V2C, 50five, Plugchoice (live) en Enphase
    ReleasesCI/CD via GitHub geen handmatige productie-deploys
    ObservabilityExterne uptime, gestructureerde logs, /status

    Verder lezen


    Vragen? Mail info@joulo.nl of bel ons.

    Joulo B.V. Brummen, NL KvK 42023359

    Wil je dieper de stack in?

    Voor partners en developers hebben we een uitgebreidere documentatie van het platform, de OAuth-stack, de OCPP CSMS en de white-label opties.