Mattias Desmet is professor klinische psychologie aan de UGent, spreker en auteur van De Psychologie van Totalitarisme — een boek dat intussen in een indrukwekkend rijtje talen verscheen, van het Koreaans tot het Hebreeuws. Daarnaast geeft hij workshops in België en Nederland rond wat hij The Act of Speech noemt: de kunst van het oprechte, vrijmoedige spreken.

De vraag was dubbel. Enerzijds een site die zijn werk en zijn stem een rustige, waardige plek geeft: workshops, events, publicaties, boeken, Substack. Anderzijds een motor eronder die de administratie van al die workshops overneemt — van de eerste klik op “inschrijven” tot de factuur in de boekhouding, over de landsgrens heen en met de BTW-regels die daarbij horen.

We deden het allebei, van het eerste ontwerp tot de laatste Peppol-regel.

Het ontwerp: papier, inkt en één rode draad

Wie over het gesproken woord schrijft, verdient een site die niet schreeuwt. We vertrokken van het beeld van een getypte brief: gebroken wit papier, diepzwarte inkt en titels in Special Elite, een letter met de lichte onregelmatigheid van een oude typemachine. De leestekst staat in een cursieve Lora — de stem van Mattias zelf — en een sobere Helvetica houdt labels en structuur op hun plaats.

Er is precies één kleur. Rood is voorbehouden aan TAoS, de afkorting van The Act of Speech, en komt terug als rode draad door de hele site.

Typografie en kleurpalet van mattiasdesmet.com
De huisstijl in één beeld: typemachine voor de titels, een cursieve serif als stem, Helvetica voor de structuur — en rood, uitsluitend voor TAoS.

De intro. Wie de site opent, ziet over een portret van Selina De Maeyer de woorden “The Act of Speech” zich letter per letter uittikken. De beginletters kleuren rood, de rest vervaagt, en de vier rode letters schuiven samen tot TAoS terwijl het beeld naar wit overgaat. Daarna typt het menu zich in. Het speelt één keer per bezoek — wie het nog eens wil zien, klikt op het kleine replay-icoontje.

De intro-animatie in vier stappen
De intro in vier beelden: de titel tikt zich uit, de beginletters worden rood, TAoS blijft over en het menu verschijnt. Eén keer per bezoek, altijd opnieuw af te spelen.

Tweetalig, en in eigen handen. De site is volledig Nederlands en Engels. De homepage is geen klassieke hero, maar het menu zelf, groot gezet als een inhoudstafel; welke pagina’s daarin staan, bepaalt Mattias in het paneel. Workshops, events en boeken krijgen elk een overzicht met filters — eigen organisatie of gastoptreden, themadag, lezing of reis, of per taal.

Homepage, workshops en events op mattiasdesmet.com
Links de homepage als typografische inhoudstafel, rechts de overzichten van workshops en events, met filters op type en organisatie.

Inschrijven zonder omwegen

Elke workshop is een reeks met eigen data, locatie, prijs en een maximum aantal plaatsen. Is dat bereikt, dan maakt het formulier vanzelf plaats voor “Volzet”; Mattias kan een reeks ook met één schakelaar sluiten.

Niet elke reeks staat meteen voor iedereen open. Een workshop kan aangekondigd worden met een openingsdatum, terwijl wie een voorrang-link krijgt al kan inschrijven. Een vervolgreeks gaat zelfs nooit publiek open: bezoekers stellen zich kandidaat, en pas na goedkeuring krijgen ze de link waarmee ze wél binnen kunnen.

Het formulier zelf denkt mee. Schrijf je in namens een onderneming, dan verschijnen de bedrijfsvelden en past het label zich aan je land aan: ondernemingsnummer in België, KVK in Nederland. De prijs wordt live opgesplitst in bedrag, BTW en totaal, zodat er aan de kassa geen verrassingen zijn.

Het inschrijfformulier van een workshop
Een bedrijf schrijft zich in voor de workshop in Ranst: bedrijfsvelden verschijnen, en de BTW-opsplitsing rekent mee — € 800 plus € 168 BTW. De gegevens zijn fictief.

De shop: online betalen via Stripe

Achter de site zit een volwaardige shop. Workshops, events en vrije giften worden allemaal online afgerekend via Stripe Checkout, met Bancontact, iDEAL en kaart. Na het formulier gaat de deelnemer er rechtstreeks naartoe, en een afgebroken betaling is geen verloren inschrijving: dezelfde link hervat ze gewoon.

We vertrouwen niet op een terugkeer naar de site om te weten dat er betaald is. Pas wanneer Stripe de betaling via een ondertekende webhook bevestigt, gaat de inschrijving op “bevestigd” — en rolt de rest van de keten vanzelf verder.

Van inschrijving tot boekhouding in acht stappen
De hele keten op één blad: van het formulier over Stripe tot de UBL in Billit, zonder dat iemand iets hoeft over te typen.

Facturatie die de boekhouder geruststelt

Een factuur is geen gewone pdf. Nummers moeten doorlopend zijn, zonder gaten, ook als twee mensen op exact hetzelfde moment betalen. Daarom wordt elk factuurnummer atomair uitgegeven: de teller per jaar wordt vergrendeld, de pdf eerst in een wachtruimte opgebouwd en pas daarna definitief weggeschreven. Elke stap belandt in een audit-log.

De factuur zelf is opgemaakt in de huisstijl en vertrekt meteen naar de deelnemer. Voorvoegsel, startnummer, bedrijfsgegevens en een BCC voor de boekhouding beheert Mattias in het paneel; facturatie, Billit en de BTW-controle hebben elk hun eigen hoofdschakelaar.

BTW over de grens. Het lastigste stuk zat niet in de code, maar in de regels. Een particulier betaalt de getoonde prijs inclusief BTW; een bedrijf ziet ze erbovenop komen. Voor een workshop in Nederland rekent een particulier Nederlandse BTW via OSS, en krijgt een Nederlands bedrijf met een geldig BTW-nummer de BTW verlegd — na een live VIES-controle. Een Nederlands bedrijf op een Belgische workshop betaalt dan weer gewoon Belgische BTW, want toegang tot een evenement wordt belast waar het plaatsvindt.

En waar een automatische factuur fout zou zijn — een Belgisch bedrijf op een Nederlandse workshop — blokkeert het formulier de online inschrijving en legt het uit waarom. Mattias maakt die ene factuur dan zelf in Billit.

Overzicht van de BTW-scenario’s
Zes situaties, zes regels: waar de workshop plaatsvindt, wie inschrijft en uit welk land bepalen tarief, prijsopbouw en de wettelijke vermelding op de factuur.

Billit & Peppol

Sinds 2026 is elektronisch factureren tussen Belgische bedrijven verplicht. Naast elke pdf bouwt de site daarom ook een UBL-bestand volgens Peppol BIS 3.0 en stuurt dat rechtstreeks naar Billit. Zo staat elke factuur automatisch in de boekhouding, en voor bedrijven met een Peppol-adres verstuurt Billit ze meteen via het Peppol-netwerk.

BTW-nummers worden onderweg gevalideerd via Vatly, met een cache zodat een trage of haperende VIES-dienst nooit een inschrijving tegenhoudt. En faalt de verzending naar Billit ooit, dan blijft de factuur gewoon bestaan en staat de fout netjes in het log.

Een factuur als pdf en als Peppol UBL
Dezelfde factuur twee keer: als pdf voor de deelnemer en als Peppol-UBL voor Billit — het bedrag is al voldaan, dus het openstaande saldo staat op nul. Fictieve klant, echte generator.

Beheer in eigen handen

Alle inschrijvingen komen samen in één overzicht, enkel bereikbaar na login in het paneel. Status wijzigen, een betaling markeren, een factuur manueel aanmaken of een inschrijving van de wachtlijst halen gebeurt met één keuze per regel. Per workshop of voor alles samen exporteert Mattias de lijst als CSV of als echt Excel-bestand, gebouwd met een eigen, lichte generator.

Onder de motorkap staan inschrijvingen en facturen als afzonderlijke bestanden, los van de pagina’s van de site. Dat maakt de opslag robuust — en onze deploys raken die boekhoudkundige data nooit aan.

Het beheeroverzicht van de inschrijvingen
Het beheeroverzicht: status, betaling, bedrag en factuurnummer per inschrijving, met export naar CSV of Excel. Namen en bedrijven zijn fictief.

Boeken en steun

Elke editie van elk boek heeft een eigen pagina met cover, uitgever, jaartal en ISBN, en het overzicht filtert per taal. Een bestelknop per editie leidt naar de juiste uitgever of winkel, en een voorraadstatus — pre-order, uitverkocht of binnenkort — houdt bezoekers eerlijk op de hoogte. De catalogus is zo opgebouwd dat een eigen webshop er later zonder verbouwing in past.

Wie het werk van Mattias wil steunen, kan dat met een vrije gift. Die loopt ook via Stripe, maar bewust volledig los van de inschrijvingen: geen factuur, geen plaatsentelling, gewoon een bedrag en een bedankje.

Boekpagina en steunpagina
Links een boekpagina met bestelknop, rechts de steunpagina: kies een bedrag of vul zelf in, en rond veilig af via Stripe.

Nieuwsbrief & Substack

Onderaan elke pagina staat één veld: je e-mailadres. Het formulier praat rechtstreeks met Laposta, geeft zonder te herladen meteen antwoord — ook als je al ingeschreven bent — en werkt nog steeds wanneer JavaScript uitstaat. Spambots vangen we op met een onzichtbaar lokveld.

De langere essays schrijft Mattias op Substack, in drie talen. De site verwijst naar de Nederlandse, Engelse en Franse publicatie, zodat elke lezer meteen in de juiste taal terechtkomt.

De Substack-pagina met nieuwsbriefinschrijving
De Substack-pagina met de drie publicaties, en onderaan de nieuwsbriefinschrijving die rechtstreeks in Laposta landt.

Het resultaat

Een site die klinkt zoals Mattias spreekt: ingetogen, precies en met één rode draad. En daaronder een systeem dat een hele administratie stilletjes overneemt. Sinds de lancering rollen de facturen er vanzelf uit — doorlopend genummerd, BTW-correct over twee landen en automatisch geboekt in Billit — zonder dat er één cijfer is overgetypt.

Zoekmachines krijgen elke workshop en elk event als gestructureerde data, bezoekers worden privacyvriendelijk geteld, en nieuwe reeksen zet Mattias zelf online. Moet er iets bijgestuurd worden, dan weet hij waar hij ons vindt.

Volgend project

Een website met zwarte gordel

Website, community & AI →
Een website met zwarte gordel
Vorig project: Basisschool De Boomhut Website voor een basisschool