Dezelfde regels, twee keer gecontroleerd.
De velden bouw je op de pagina, als onderdeel van het ontwerp. Elke regel die je instelt wordt in de browser nagelopen terwijl iemand typt, en op de server nog een keer zodra het binnenkomt — tegen één gedeelde beschrijving.

Eén beschrijving, drie uitvoeringen, één antwoord.
De browser, de editor en de server worden aan hetzelfde testbestand gehouden, dus een veld kan niet op de ene plek slagen en op de andere zakken. Elk geval erin staat voor een fout die ooit is meegegaan.
Zet een veld op verplicht, geef het een patroon mee, of hang er regels aan zoals een minimum. Een patroon dat niet te lezen valt laat iedereen door in plaats van iedereen te weigeren.
Bijlagen worden aangenomen, bij de inzending bewaard, en volgens een schema opgeruimd, zodat een postvak geen schijfruimteprobleem wordt.
Een verborgen lokveld vangt de eenvoudige bots. Cloudflare Turnstile doet de rest, op de plekken waar de bezoeker die ook kan laten zien. Geen van beide vraagt een mens om bussen aan te wijzen.
Inzendingen worden altijd bewaard. Mailen is een schakelaar daarbovenop, en de bezoeker krijgt daarna jouw bericht of een pagina naar keuze.
Aanvragen, reserveringen en bestellingen in één lijst.
Drie modules, drie soorten administratie, één plek om ze te lezen — per site samengevoegd, nieuwste bovenaan, te filteren en te doorzoeken, en elke regel blijft gekoppeld aan waar hij vandaan komt.
Een formulier dat werkt zonder framework.
Op een gepubliceerde pagina draait een klein script, geen framework. Het formulierelement zet een echte verzendknop neer en dat script stuurt hem door — en juist daardoor werkt het ook als de pagina uit de cache komt en er geen framework is.

Zet een formulier op een pagina en stuur jezelf een test.
Dat kost een minuut of vijf, en het is de snelste manier om de hele keten te zien werken.