Django upgrades and rescue, without a rewrite.

We move ageing Python and Django codebases onto supported versions one release at a time, keeping the site live throughout.

03 · Django upgrade & rescue

Upgrades & rescue

Move ageing Python and Django codebases onto supported versions without a rewrite. We untangle migrations, remove circular imports and add tests where they are missing, keeping the site live throughout.

Django 2.x / 3.x → 5.2 LTS · Python 3.13 · pytest
What you get
Codebase audit with a risk-ranked upgrade plan
One release at a time, each shipped to production
Test coverage added around the riskiest code first
Dependency clean-up and security patching
Typical engagement4–14 weeks