In the first phase of the pandemic the need for a fast, scalable test-registration portal was acute. For a healthcare client I worked in a team on a COVID portal where people could register for a test and, after the result was in, automatically receive emailed advice based on their result and their answers in a guided questionnaire.
On the surface the flow looks straightforward, but it was packed with details that all had to be right under pressure. Who could register? What if someone had already submitted a request? What if symptoms changed between registration and testing? How do you make after-the-fact advice legally careful and practically useful? And how do you cope with moments where the registration system receives a week's worth of volume in a few hours?
My responsibility was the design and implementation of several features, including the step flow itself and the integration with national health reporting. The step flow was more than a form: it routed users to different next steps based on their answers, with validations that prevented illogical combinations.
The reporting integration was a separate challenge. Results had to be sent reliably, in the right format, and at a fixed cadence to official channels. We set this up with explicit batches, retries for network issues, and logging that always allowed operations to trace what had been sent when.
Technically we leaned on Symfony 5 with API Platform and PHP 8, with Keycloak handling authentication for the different user groups — solid, predictable, and more than sufficient for the workload. On the front-end we used Angular 11 to ship an interface that worked on virtually every device, including the older phones we frequently saw in practice.
The hallmark of this project was pace. Specs changed often, capacity had to scale fast, and communication with external parties usually happened in short conversations rather than polished documents. Good tests, small releases, and a team that trusts each other were the only way to stay live in this context.
Outcomes
- Registration, step flow and automated emailed result advice in one flow
- Reporting towards official channels with explicit batches, retries and traceable logging
- An interface that also works on older phones, on Angular 11 with Symfony 5 and API Platform