Side Project

Gym Tracker

A self-hosted scraper and dashboard that logs how busy UW–Madison's gyms are, so you can find the quiet hours.

With 40,000+ students and one of its two main gyms closed for renovation, UW–Madison's Nicholas Recreation Center gets packed. The campus RecWell site shows a live occupancy number, but it only updates about hourly and keeps no history, so there's no good way to tell when it's actually quiet. I built a small system that scrapes that number every five minutes, stores it, and charts the trend, so you can spot the patterns and pick a good time to go. I later added UW's other main gym, the Shell.

5 minscrape interval
2UW gyms tracked
24/7automated logging
Python MySQL PHP Chart.js Raspberry Pi
How it works

A small scrape-and-chart pipeline

The whole thing is a lightweight data pipeline: a Raspberry Pi collects the data on a schedule, and the front end pulls the history to draw the graph.

Raspberry Pi Python scrapes RecWell every 5 min
MySQL stores each new reading
PHP serves the history on request
Chart.js renders the occupancy trend

The Pi logged occupancy for months before I paused it. It was a fun exercise in owning something end to end: the scraper, the storage, a small API, and a front end, all glued together and left to run on its own.