Over a period of four months we then built out the web application. We used .NET 9 for the Server, a popular engineering framework with which we had extensive experience and Blazor (a frontend framework similar to React) for the frontend. We adopted a
modular monolith architecture to allow for the flexibility of building out new features but the simplicity of a monolith repository. Each business domain (CRM, Clinical, Scheduling, Billing, Metrics Dashboard, Authentication) is implemented as an independent module with strict layering: Domain entities define business rules, Application layers handle use cases through MediatR patterns, Infrastructure manages data persistence via Entity Framework Core with PostgreSQL, and Endpoints expose APIs through
ASP.NET Core minimal APIs.
We also built out sophisticated authorisation handlers that implement fine-grained, resource-based access control. For example, junior clinicians can only access patient data for referrals specifically assigned to them, whereas senior clinicians can review referrals assigned to them and also assigned to other clinical colleagues as they are required to have access for oversight.