← All projects
AstroTypeScriptBunNginxPM2Umami 2026+

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.