How’sTheWater? is a personal project designed to offer live data on what’s been going in and on around the UKs rivers, lakes and beaches today? It brings together live storm overflow data, river levels, rainfall, flood warnings and bathing water results for hundreds of spots, rivers, lakes and beaches across Britain.

The interesting part is the plumbing (pun intended). Data is pulled from more than 20 open data sources: live storm overflow feeds from 11 water companies, river level, rainfall and flood warning APIs from the Environment Agency, SEPA and Natural Resources Wales, bathing water registers, published spill logs, annual returns, Open-Meteo forecasts and Ordnance Survey‘s river network.
One company reports status as codes and another as words, some give local times with no timezone, some use camelCase fields, and some quietly cap page sizes. Each source gets its own reader that maps its records into a shared set of immutable DTOs, so the ingest pipeline and everything after it never see the original format. Adding a new company means writing one reader, not touching the rest of the app. River names need the same treatment. “THE RIVER WENSUM”, “TRIB O RIV.TEIGN” and “Bristol Avon (By Bk to Netham W” are all parsed down to a river the site knows. Each monitor is then placed on OS river centrelines, so data from every company and agency can be compared along the same stretch of water.

The idea was originally conceived to provide a central spot for live analysis of “popular” wild swimming areas afters seeing news reports on sewage spillage and wondering how widespread the problem was. But the longer I spent on it the more it morphed into an all round, general look at all the waterways in the UK. Rivers, beaches, lakes – all are affected near daily by sewage overspills. You don’t realise how often it happen until you see it spelled out in front of you.
The site is built with Laravel, Tailwind with extensive use of Leaflet maps. Due to the sheer amount of data we’re working with to make this site possible, plus some initial issues with page loading times, I decided to prioritize speed and opted to forgo using a JS framework this time and instead went with simple Blade templates. This not only made development a lot more rapid but made it zero effort to get Cloudflare to the keep the HTML cached on the edge for extended periods and loading super quick.

Share a page and you’ll see custom OG images for each location. Each page has an RSS feed so you can subscribe to updates. And with the work that’s gone in to standardizing the data, Ive started work on a simple API to help others access the info without the hassle I had to go through. I have some work left to do puzzling out what I can and can’t share according to the licenses of the data sources (most of it is open data on a Government license, some is a little more restrictive) but as soon as I’m finished I’ll get that launched.
The site source is available on GitHub