Camus Clean Sheet
Football data storytelling for Indonesian fans. Live standings, matchday ops, data pipelines.
Overview
Football data storytelling project built for Indonesian audience. Combines live match data, standings, fair-play rankings, and matchday operations into a narrative-driven experience. Covers major competitions with automated data pipelines from ESPN, FotMob, and other sources.
Runs on a VPS with Nginx serving the static Astro build. Umami analytics for privacy-first tracking. PM2 for process management of background jobs and data collection.
Key Features
- Live standings with anti-screenshot watermarking on data tables
- Matchday operations: World Cup 2026 config, TCS/fair-play computation
- Automated data pipelines: ESPN + FotMob integration with global computation
- Indonesian-first copy with football-English mix tone
- Static site generation for sub-second page loads
- Umami analytics (self-hosted, privacy-first)
Tech Stack
- Astro (static site generation) + TypeScript
- Bun as runtime for data collection scripts
- Nginx for serving static + reverse proxy
- PM2 for process management
- Umami for self-hosted analytics
- Certbot for SSL
Architecture
Dev tree at /home/ubuntu/camus, publish tree at /home/ubuntu/camus-publish.
Build via rtk npm run build, deploy from publish tree to
/var/www/camuscleansheet.com/current. Public services use public IP + Nginx,
not Tailscale.
Role
Founder and operator. Built end-to-end: data pipelines, web frontend, deployment pipeline, analytics, and content strategy. Ongoing development for World Cup 2026 coverage.