Chapter 01
The challenge
The original agency had stopped responding, there was no documentation, and each attempted fix by a freelancer broke something else.
Getting from there to a working product was not only a matter of writing code. A few things made this project harder than it first looked:
- Hosting and repository access sat with people who had left
- No tests, no error tracking and no staging environment
- Dependencies several major versions out of date, with known vulnerabilities
- Courses were running, so the platform could not go offline
Chapter 02
What we did
A two-week audit, then stabilisation: access recovered, monitoring and tests added, and the worst modules refactored with the platform live.
1.Recover and document
Accounts moved into the client's ownership and the platform made to run from written setup steps for the first time.
2.Evidence-based audit
A ranked report showing what was fragile, what was merely unfamiliar and what each fix would cost, concluding a rewrite was not needed.
3.Safety net first
Error tracking, a staging environment and end-to-end tests on enrolment and payment before any refactoring began.
4.Incremental modernisation
Dependencies upgraded and the two most fragile modules rebuilt behind feature flags, with releases continuing weekly.
Chapter 03
The outcome
Headline result
Reliable, automated deployments restored
- Recurring production errors triaged and trending down
- A documented codebase an in-house hire could take over
Chapter 04
Built with
The tools chosen for this project, each for a reason specific to the problem rather than out of habit.
- React
- Node.js
- PostgreSQL
- Playwright
- Sentry
- GitHub Actions




