Case study 01
Radiology worklist and reporting web app
The screen radiologists work in all day: worklist, study reconciliation, collaborative reporting and in-browser image viewing, built on Next.js 15.
- of my commits since Mar 2025
- 846
- of my commits since Mar 2025
- releases shipped
- 444
- releases shipped
- active sites on the platform
- 375
- active sites on the platform
Problem
Radiologists on a national imaging platform need one fast screen to pick up studies, match them to orders, read the images, write the report with colleagues and send it out, with nothing to install.
Constraints
- Worklists are long and busy: filtering, sorting and bulk assignment have to stay fast.
- Medical images are large DICOM datasets, and they have to open in a browser tab.
- More than one person can work on a report at the same time.
- The app ships continuously while people are reading, so releases must not break live sessions.
What I built and led
- A Next.js 15 App Router app in TypeScript: dashboard, worklist with filters and bulk assignment, study reconciliation, report editor, shareable report links, billing and exports, and chat.
- In-browser DICOM viewing and segmentation with Cornerstone3D and vtk.js.
- Real-time collaborative report editing on Yjs + Hocuspocus.
- A typed data layer: TanStack Query and Table, Zustand, React Hook Form + Zod, on Tailwind 4 and shadcn/Radix.
- OpenTelemetry tracing in the browser app, with Vitest unit and Playwright end-to-end tests.
Architecture
Impact
- 846 of the repo's 2,351 commits, from Mar 2025 to now
- 444 tagged releases through release-please, shipped while radiologists were reading
- The working front end of a platform with 375 active sites and 70,651 studies in Sep 2026
- Platform-wide median of 8.1 minutes from study arrival to finalised report
Commit and release counts from GitHub; platform figures from production telemetry, October 2026.
Transfers to: Any data-heavy operator console: dispatch and logistics, trading and risk desks, support tooling, collaborative editors.
Stack
- Next.js 15
- React
- TypeScript
- Tailwind 4
- shadcn / Radix
- TanStack Query + Table
- Zustand
- React Hook Form + Zod
- Cornerstone3D
- vtk.js
- Yjs
- OpenTelemetry
- Vitest
- Playwright