ESF-Plus
A German state funding programme needed more than 700 organisations to send documents to a public authority securely. I built it on my own over three years. It ran a year without a security incident, and my employer then sold it.
The constraint that mattered most
Public funding money has to be auditable years later. Not "we have logs" auditable. Someone from the funding bank has to be able to ask, in 2029, who uploaded which document in 2024 and who looked at it. That requirement does not arrive as a ticket. It arrives as a compliance review, after the software is finished, and by then it is too late to retrofit.
How it works
The product



For the technical reader
How it is built, enforced and checked
Architecture
Server-side extraction, so a malformed upload never becomes the browser's problem. Role and ownership checks live in one layer that every request passes through. Email to case handlers is template-driven, so the authority can change wording without me.
Enforcement
The audit record is written before the document is stored, so an upload that fails halfway still leaves a trace. Permissions are checked in one place rather than at each screen, which is what makes "who saw this file" answerable at all.
Checked
PHPUnit around the permission model and the extraction path. A year in production with no security incident, on a system used daily by people outside the organisation.
What I would do differently
Livewire kept me to one language and one mental model, which is why one person could finish it. It also means the interface is chattier over the network than a proper client would be, and on a bad connection in a small organisation that shows. If I built it again for the same constraints I would keep the choice, and I would measure it earlier.
Happy to walk through any of these in detail, including the parts that went wrong.