Sample project: an illustrative engagement showing how we scope and build this kind of work.
- spreadsheets replaced in phase one
- 5
- user roles with scoped access
- 3
- target to first production release
- 6 weeks
Context
This sample engagement describes a group of physiotherapy clinics that had grown from one location to several. Each clinic ran its own rostering, room bookings and referral tracking in a set of shared spreadsheets. Clinical records lived in a dedicated practice management system, but everything around it was manual.
Challenge
Managers spent hours each week reconciling rosters across sites, double-booked treatment rooms were common, and referrals from GPs sometimes went unanswered because nobody could see the full list. The group had looked at off-the-shelf workforce tools, but none handled their mix of part-time clinicians working across sites, room types with specific equipment, and referral follow-up in one place. Patient data had to stay in the existing practice system.
What we built
A focused internal portal, delivered in phases:
- Rostering. Managers build weekly rosters per site, with clinicians’ availability, qualifications and cross-site travel taken into account. Conflicts are flagged as they are created rather than discovered on the day.
- Room allocation. Rooms and their equipment are modelled explicitly, so a session that needs a hydrotherapy pool or a gym space can only be booked where one exists.
- Referral tracking. A shared queue of incoming referrals with status, owner and due date, plus reminders when a referral hasn’t been actioned. The portal stores referral metadata and links to the practice system rather than copying clinical notes.
- Reporting. Simple weekly views of utilisation by site, clinician and room.
Phase one replaced the rostering, rooms and referral spreadsheets. Later phases on the care retainer cover leave requests and a read-only roster view for clinicians on their phones.
Architecture
A Next.js application with a PostgreSQL database accessed through Prisma, deployed on AWS in the group’s own account. Staff sign in with their existing Microsoft accounts through Entra ID, and roles (group admin, site manager, clinician) control what each person can see and change. All changes to rosters and referrals are written to an audit log.
The data model treats sites, rooms, clinicians and shifts as first-class records, which made cross-site rules straightforward to express and test. Daily backups, error monitoring and uptime checks were part of the first release.
Stack
Next.js, TypeScript, PostgreSQL, Prisma, Microsoft Entra ID for single sign-on, Sentry for error monitoring, deployed on AWS with GitHub Actions for CI/CD.
