Hoe ik bouw

Mooi aan de buitenkant. Net zo netjes vanbinnen.

Je ziet het niet, je merkt het wel: alles werkt, elke dag, en je gegevens blijven van jou.

  • Privacy vanaf het begin
  • Hosting in Nederland
  • Elke wijziging eerst getest

Privacy en beveiliging

Eerst op slot. Dan pas mooi.

Aan beveiliging besteed ik de meeste tijd. Daar heeft je klant het meest aan.

Op jouw naam. In Nederland.

Je site en je gegevens staan op een hostingaccount op naam van jouw bedrijf, in Nederland. Ik beheer het voor je.

Inloggen met je gezicht.

Een passkey werkt alleen op jouw eigen paneel. Op een nepsite heb je er niets aan.

Geen meekijkers bij je formulier.

Geen trackers, geen cookiemelding en geen plaatjespuzzel van Google.

Elke dag een kopie buiten de deur.

Die kopie zit op slot, buiten de server.

Alles over beveiliging

AI en je gegevens

Ik bouw met hulp van AI. Je gegevens zien die nooit.

Het zijn twee gescheiden plekken. Er loopt geen draad tussen.

Waar ik bouw

  • In een kopie met een verzonnen bedrijf
  • Mappen met echte gegevens zijn voor AI-tools op slot
  • Een controle weigert echte gegevens in de code, bij elke bouw

Waar jouw gegevens staan

  • Op jouw server, versleuteld
  • De schrijfhulp kan niet bij klanten, afspraken of berichten
  • Wat hij verstuurt, staat in je logboek

Code gaat pas naar je server als alle controles slagen. Je gegevens gaan nooit de andere kant op.

De lat

Het doel is 100. Op alles.

Voor elke site die ik bouw: 100 in alle vijf onderdelen van Google Lighthouse, op een telefoon. Ik meet voordat een site live gaat, en daarna opnieuw.

100
Snelheidmeteen open
100
Toegankelijkvoor iedereen
100
Werkwijzeveilig en netjes
100
Vindbaargoed voor Google
100
Klaar voor AIleesbaar voor AI-assistenten

Dit is het doel, geen meting. Wil je de cijfers van een site die ik bouwde? Vraag ernaar in de kennismaking.

Opzeggen en terugkomen

Terugkomen kan altijd. Zonder de maanden ertussen.

  1. Je zegt op

    Wanneer je wilt, voor het einde van je jaar. Je betaalde jaar loopt gewoon af. Wat loopt, lever ik nog op, met de uitleg erbij.

  2. Daarna

    Alles blijft draaien op jouw hosting en blijft van jou. Updates en nieuwe wensen stoppen dan.

  3. Je komt terug

    Eén inhaalronde, of je nu drie maanden of anderhalf jaar weg was. Daarna begint je nieuwe jaar.

Voor ontwikkelaars

Onder de motorkap. Voor wie het wil zien.

Hier lees je hoe het systeem is opgebouwd en wat elke wijziging doorstaat.

Het gereedschap

Gewoon gereedschap. Bewust weinig.

Geen framework dat over drie jaar uit de mode is. Wat er draait, is bekend en saai, en dat is de bedoeling.

Node.js en Express

De server en het paneel, onder Passenger op de hosting.

JavaScript met typecontrole

Gewoon JavaScript, gecontroleerd door TypeScript. De server draait de code zoals hij geschreven is.

Vite

Bouwt de site tot vaste bestanden met een vingerafdruk in de naam.

Playwright

Elk scherm in een echte browser, op telefoon en computer.

Zestien pakketten van anderen
PakketWaarvoorWaarom niet zelf
expressDe webserverDe standaard, en goed onderhouden.
helmetVeilige instellingen voor de browserKlein, en iedereen kent het.
express-sessionOndertekende sessiesBeveiliging maak je niet zelf na.
bcryptjsCodes veilig opslaanBeveiliging maak je niet zelf na.
busboyUploadsVervangt multer, met een eigen laag erboven.
sharpFoto’s verkleinenSnel, en zelf niet te doen.
pdf-lib, fontkitPdf’s in je eigen lettersVoorstellen en facturen.
nodemailerMail versturenDe standaard.
tsdavJe agenda via CalDAVEen groot protocol.
markdown-itArtikelenDezelfde opmaak in site en paneel.
node-html-parserGeüploade SVG’s veilig makenAlleen vervangen door iets dat net zo streng is.
diffVersies vergelijkenEén pakket, zonder afhankelijkheden.
ejsSjablonenEén pakket, zonder afhankelijkheden.
postcssCss bij het bouwenHet paneel bouwt je site als je publiceert.
viteDe site bouwenHet paneel bouwt je site als je publiceert.

En zeven voor het bouwen en testen: eslint, typescript, acorn en de Playwright-tests.

Van idee tot live

Zo gaat een wijziging naar je server.

  1. Een eigen werkkopie

    Elke wijziging begint apart, met verzonnen gegevens. Nooit met die van een klant.

  2. De controles

    Types, lint, tests en de 25 controles, bij elke wijziging.

    Eén rood, en het stopt hier

  3. De browser

    De schermen in een echte browser, op telefoon en computer, licht en donker.

  4. Naar de server

    Een push naar de server, een herstart, en daarna kijk ik op de live site of alles klopt.

De gegevens

Bestanden op de server. Nooit in de code.

Gegevens staan als JSON op de server, alleen leesbaar voor het systeem. Ze komen nooit in de code, in een test of op mijn computer om aan te werken.

Op de server

Je gegevens, als bestanden

  • klanten.json
  • afspraken.json
  • berichten.json

Hier gaat niets doorheen

In de code

Site, paneel en tests, zonder één klant

  • site
  • paneel
  • tests

Probeer het zelf

Voel hoe het werkt. Hier, in je browser.

De Kluis

Typ er gerust iets bij, en zet de notitie op slot. Je browser versleutelt hem echt.

Het slot is echt. De passkey is nagespeeld. Wat je typt, blijft in je browser: er gaat niets naar mij.

Een nagemaakte inlogpagina

Een oplichter maakt je inlogpagina na, op een adres dat er bijna zo uitziet. Kijk wat er dan gebeurt.

Met een wachtwoord

••••••jouwbedr1jf.nl••••••Oplichter

Je typt je wachtwoord op de nepsite.

Met een passkey

jouwbedr1jf.nlJe telefoon

Je telefoon zoekt een sleutel voor dit adres.

Eindeloos raden lukt niet

Een computer kan duizenden wachtwoorden per seconde proberen. Jouw paneel heeft er geen: je logt in met een passkey. En na vijf pogingen gaat de deur een kwartier dicht.

0pogingen
Zonder deur
duizenden pogingen per seconde
Met de deur
hoogstens 480 per dag
Met alleen passkeys
niets om te raden

De deur is er voor wie het toch blijft proberen.

Inloggen met een passkey

Geen wachtwoord. Wel een sleutel op je telefoon.

  1. Je telefoon maakt een sleutel

    Eén keer, de eerste keer dat je inlogt. Hij blijft op je telefoon, of in je iCloud- of Google-sleutelhanger.

  2. Je kijkt of tikt

    Inloggen doe je met je gezicht, je vinger of de pincode van je telefoon. Net als bij je bank-app.

  3. Je paneel controleert

    Je telefoon bewijst dat hij de sleutel heeft, zonder hem af te geven. Er gaat geen wachtwoord over de lijn.

Telefoon kwijt?

Dan kom je met je herstelsleutel weer in je paneel en je Kluis. Of de eigenaar zet je toegang weer open, met een link naar jou.

Wat wel en niet

Niet alles kan op slot. Dit is het verschil.

Een herinnering sturen kan alleen als het systeem de afspraak en het mailadres kent.

Op slot met jouw sleutel

  • GespreksnotitiesOok ik kan er niet in
  • De tekst van je takenOok ik kan er niet in
  • Wat bezoekers vooraf invullenOok ik kan er niet in
  • Antwoorden op opdrachtenAlleen jij en je klant, op apparaten die het ondersteunen

Versleuteld, en het systeem kan erbij

  • Je agendaVoor herinneringen
  • Namen en mailadressenOm te kunnen mailen
  • Berichten van je klantenOm ze te tonen en te beantwoorden
  • Voorstellen en facturenVoor bedragen en akkoord
  • In je paneel kom ik alleen als jij de deur openzet. Na 24 uur gaat die vanzelf dicht.

  • Als beheerder van je hosting kan ik bij de bestanden, maar ik open ze niet. Zo staat het in onze verwerkersovereenkomst.

  • Wat in de Kluis staat, kan ook ik nooit lezen.

Privacy

Wat je klant je vertelt, blijft bij jou.

Wie er precies bij je gegevens kan, wat er vanzelf gebeurt en wat je zwart op wit krijgt.

Op jouw scherm

NaamSanne de Wit
BerichtKan de terugkomdag later?
Afspraakdo 5 nov, 10.00

In het bestand eronder

Naamx9Kq2L…
Berichtx9Kq2Lm7V…
Afspraakx9Kq2L…

Op jouw ingelogde scherm leesbaar. In het bestand eronder niet.

De route van een bericht

Van je formulier tot het verdwijnt.

Zo loopt één aanvraag door je systeem. Nergens tussendoor een ander bedrijf.

Op hosting op jouw naam, in Nederland

  1. Iemand vult je formulier in.

    Het bericht gaat rechtstreeks naar je eigen systeem. Er zit geen formulierdienst tussen.

  2. Het gaat op slot.

    Alles wat over je klanten gaat, staat per veld versleuteld, op hosting op jouw naam in Nederland.

  3. Jij leest het.

    Jij, en wie jij toelaat. Wie een dossier opent, staat in het logboek.

  4. Daarna

    Geen klant geworden?

    Dan verdwijnt het na een jaar vanzelf.

    Wel een klant?

    Dan gaan de afspraken zeven jaar na de laatste sessie weg.

Wat er niet gebeurt

Vier dingen die hier niet meekijken.

Geen trackers

Je cijfers worden op de server geteld, zonder iemand te volgen. Dus geen cookiemelding.

Geen puzzel van Google

Het spamfilter werkt zonder plaatjes en zonder logo van een advertentiebedrijf.

Geen advertentienetwerken

Er staat geen code van een advertentiebedrijf in je site.

Geen doorverkoop

Ik verkoop en verhuur je gegevens niet. Ik ben de beheerder.

AI

Een hulp. Geen beslisser.

Je systeem werkt helemaal zonder AI. Zet je de schrijfhulp aan, dan stelt die zinnen voor. Jij beslist wat blijft.

Probeer het

Het stelt voor. Jij kiest.

Een suggestie verandert niets, tot jij hem overneemt. Laat je hem liggen, dan komt hij niet terug. En wat er naar de AI is gestuurd, lees je altijd terug in je paneel.

Pagina Contact

Wij streven ernaar om zo spoedig mogelijk te reageren.

Suggestie

Je hoort binnen twee werkdagen van me.

Hans van der Klok, lachend, met zijn laptop

Eén gesprek, en je weet of het past.