Personal project · 2026
Legacy app modernisation – this portfolio
Brought a 2020 Flask site on a deprecated runtime up to Python 3.12 and Flask 3, with HTTPS, an enforced security policy, passwordless sign-in, per-user storage and a 200+ test suite.
At a glance
- Assess
- Plan
- Upgrade runtime
- Harden
- Build new features
Context
The site ran on Python 3.8 and App Engine's deprecated python39 runtime, so it could no longer be redeployed. Several pages were broken or slow.
Problem
Make it deployable and safe again without a rewrite, then build new products on top of it.
My role
Assessment, plan and implementation in 14 days (25 Oct – 7 Nov 2026). The 2020 site was hand-coded; the rebuild was AI-assisted with Claude Code, while decisions, reviews, cloud console steps and deploys stayed manual.
Approach and architecture
- Written assessment first (architecture, security, bugs, dependencies, UX), then 16 numbered plans
- Each plan item with a problem, steps and a "done when" check, implemented one at a time with a report
- Runtime upgrade to Python 3.12, Flask 3 and App Engine python312
- HTTPS everywhere, HSTS, CSRF protection and an enforced Content Security Policy
- Passwordless sign-in (Google, Microsoft, LinkedIn); one private folder per user
- Automated tests for every fix; bugs reproduced in a headless browser before they were fixed
Stack
- Python 3.12
- Flask 3
- pandas 2.2
- Authlib
- React 18
- pytest
- Vitest
- Google App Engine
- Cloud Storage
- Firestore
- Secret Manager
- Claude Code
Outcome
- Deployable again after the python39 runtime was deprecated
- Apriori demo request time cut from 4.7 s to 0.36 s
- 200+ automated tests (283 pytest, 49 Vitest, end-to-end suites)
- New on the same codebase - 12 wellness games, Family Tree sharing, Posts and an admin page
- Responsive layout with WCAG AA colour contrast
What I'd do next
- Push to GitHub with CI, add monitoring
- Facebook and GitHub sign-in