Every other project here is deployed to a platform that handles the hosting for me. snapcount is the one I run myself. It lives on an OVHcloud VPS-2 running Ubuntu 24.04 — a box I provisioned, secured and maintain.
The application itself is an NFL data explorer: ten seasons of play, from 2016 through 2025, queryable by team, season and player.
What's in production
- 2,761 games across 10 seasons
- 320 team-seasons and 19,521 player-seasons
- A nightly ingest job that keeps the data current
- 199 backend tests covering the API and the ingest pipeline, plus frontend unit and four-shard Playwright suites in CI
How it's deployed
The stack runs as Docker Compose services behind Traefik, which terminates TLS using certificates it obtains and renews from Let's Encrypt. Deployment is a GitHub Actions workflow I trigger by hand, run by a runner hosted on the same machine, so it builds and rolls the containers over without any external CI touching the server. Pushing to the main branch deploys nothing, on purpose.
None of that is difficult in isolation. Doing all of it on one box — reverse proxy, certificates, container orchestration, scheduled work and a deploy pipeline — is a different exercise from pushing to a platform that provides them, and it is the part of this project I'd point at first.