Drinking Water for Everyone
Infrastructure and maintenance work that made a live public-service app easier to trust.
I did not build this product from scratch. I came in to move it off fragile hosting, automate the operational chores behind it, and leave the service safer to run over time.
Project frame
- Context
- An existing public-service app that surfaces drinking water advisory data.
- Stack
- React frontend, Flask + Python backend, and a SQL data layer.
- My role
- Infrastructure migration, automation, and maintenance tooling on a live service.
Why this mattered
The value here was not a new interface. It was turning risky, easy-to-forget operational work into a supportable system.
This was operational repair work, not a greenfield build.
The job was to step into an existing system, respect what already worked, and reduce the risks that had built up around hosting and maintenance.
Public-service apps do not need heroics. They need reliability. The work here was about moving a live product onto better footing, turning repeated tasks into tooling, and making sure operational debt did not keep accumulating quietly in the background.
- This was a live service, not a greenfield rewrite.
- The legacy hosting setup made the system harder to trust and harder to maintain.
- Backups, retention, and deployment work needed to become repeatable instead of memory-based.
Three pieces of work made the service easier to support.
01
Migration to Railway
I moved the app off a legacy GoDaddy Ubuntu server and handled deployment config, secrets, and cutover work so the team could support it on a cleaner hosting path.
02
Backup automation
I wrote Python automation for scheduled backups so protection was not dependent on someone remembering the process at the right time.
03
Retention tooling
I added data deletion endpoints so the team could manage retention and storage intentionally instead of letting stale data quietly pile up.
The result was quieter, which is exactly what a live service needs.
The app ended up on sturdier hosting, backups became repeatable, and retention stopped being an afterthought. That kind of work is rarely flashy, but it is what makes a public service easier to maintain without unnecessary risk.
This project shows I can step into an existing system, do the operational cleanup, and leave the product healthier than I found it.
Hosting
More stable and easier to support
Backups
Repeatable instead of memory-based
Retention
Controlled with explicit tooling