Case study · Elsinore Valley MWD
WellSound
Field data-collection app
A web app operators use to log monthly well measurements, with a live chart that flags statistical outliers as a reading is typed — catching data errors before they are submitted.
- Where
- Elsinore Valley MWD
- Role
- Full-stack developer — build & deploy
- When
- 2026
- Users
- Field operators, water resources staff
wellsound · new measurement
Mock · synthetic dataThe problem
Groundwater monitoring depends on a clean, long-running record of monthly water-level readings. One mistyped value, or a reading taken a different way, distorts that record.
Errors are cheapest to catch at the moment of entry — while the operator still has the well in front of them.
What I built
Context while you type
The well’s history is charted next to the entry form. A value outside the normal range (±2σ) or off-trend is flagged before it is saved.
Method-change detection
If the way a reading was taken changes, the operator has to acknowledge it before the reading is accepted.
A safe commit window
Submissions sit in a 24-hour pending window and can be cancelled before they auto-commit. Later corrections are stored alongside the original, never over it.
Single sign-on and roles
Staff sign in with their existing Microsoft work accounts (Entra ID / OAuth 2.0). Viewer, Operator, Super and Admin roles control who can do what.
History and export
Full measurement history with filtering, a drill-down view, and CSV export.
On-premises deployment
Runs on a Linux server behind an Nginx reverse proxy, managed by systemd, with no cloud dependency.
Stack
- Backend
- PythonFastAPIUvicornSQLAlchemy 2.0
- Data
- PostgreSQL — six-table schema
- Frontend
- JavaScript — single file, no build step
- Auth
- Microsoft Entra ID (OAuth 2.0)JWT cookiesRole-based access
- Ops
- UbuntuNginxsystemd
Result
- Statistical outliers beyond two standard deviations are flagged before field readings are saved, improving data quality at the point of entry.
- Staff use the credentials they already have; access is enforced by role.
- Reliable on-premises hosting with the app starting automatically on server boot.