Where2Hit is a crowdsourced tennis-court finder — a FastAPI app with a Jinja/HTMX front end and a SQLite database. For months it only ran on my Mac via uv run. Here's how it got to running 24/7 on a Raspberry Pi.
The shape of it
The whole thing is a rootless Podman stack supervised by systemd, with the outside world reaching it through a Cloudflare Tunnel — outbound-only, so there are no ports to forward and TLS is terminated for free at Cloudflare's edge.
Internet ──https──▶ Cloudflare edge ──tunnel──▶ cloudflared ──▶ app:8000 ──▶ SQLite volume
The one thing that actually blocked me
The plan was to add where2hit.kevinelaba.com as its own Cloudflare zone. Turns out subdomain zones are Enterprise-only on the free plan, and the only free alternative was migrating my whole existing domain — which also serves my portfolio and another app. Too risky.
The fix: register a brand-new domain, kevmadeit.com, straight through Cloudflare Registrar. It's authoritative on Cloudflare from minute one, fully isolated, and leaves everything else untouched. That's why this site exists in the first place.
More build logs to come as the rest of my apps move over here too.