Projects
2021·Developer in a team, owning the Keycloak integration

COVID test step configurator

Part of a team building a portal and low-code platform for a healthcare organisation during the pandemic.

Angular 11Symfony 5PHP 8KeycloakTypeScriptPHPUnit
Geometric flat illustration with a branching step diagram in muted tones

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

Sectors & expertise

More work

Other projects

Contact

Working in this domain?

Facing a similar challenge? Let's have a no-obligation conversation.

Get in touch