During the COVID pandemic there was urgent demand for software that changes as fast as policy itself. For a healthcare organisation I worked in a team on a portal and an underlying low-code platform that allowed functional admins to adjust test-intake steps, questionnaires, and advice rules — without engineers needing to ship every week.
The portal had to simplify the work of testing locations: registration, intake, sample collection, recording, and routing of results. None of this was set in stone at the start of the project: definitions changed weekly, sometimes daily, as guidance evolved with what the world was learning about the virus.
We deliberately combined a classic application (Angular 11 with Symfony 5 behind it) with a configurable step engine. In this model a step is more than a screen: it's a combination of a question or action, conditions, validations, follow-up steps, and consequences (e.g. routing to another flow). Functional admins built complete journeys without touching a single line of code.
Authentication and authorization ran entirely through Keycloak. That was not a luxury but a necessity: multiple audiences (staff, clinicians, admins, third parties) needed access to clearly bounded parts of the portal, and that boundary had to be defined centrally and demonstrably. I helped shape the Keycloak integration and made it solid with integration and e2e tests.
We invested heavily in testability. PHPUnit on the back-end, Jasmine and Karma on the Angular side, plus an e2e layer that walked through complete journeys. That sounds excessive for a project that had to stand up in a few months, but it was exactly that test base that let us keep changing without fear — which was essential here.
Ultimately, due to shifting organisational priorities, the project was not delivered in its full form. What it did give me was a deep lesson in flexible architecture, in collaborating under heavy pressure, and in separating what truly has to live in code from what is better expressed as configuration.
Outcomes
- Steps, questionnaires and advice rules editable by functional admins, without a release
- Four audiences separated in Keycloak: staff, clinicians, admins and third parties
- Three test layers: PHPUnit, Jasmine with Karma, and end-to-end scenarios across complete journeys