git is the database
Every rating is one Markdown file in the repo. Adding an entry = one file + one commit; the site rebuilds itself. No backend, no CMS, no login — the public site is read-only paper.
Astro 6 · GSAP + ScrollTrigger · Lenis · rough.js · satori — statically built,
deployed on Vercel. The full decision log lives in the repo as
DECISIONS.md.
Every rating is one Markdown file in the repo. Adding an entry = one file + one commit; the site rebuilds itself. No backend, no CMS, no login — the public site is read-only paper.
Movies & series carry a TMDB id; anime & manga an AniList id. At build time two small scripts pull the posters and covers, cache them, and the torn-paper frame is applied in code. Type an id → a cutout appears.
The cutout edge is one SVG feTurbulence → feDisplacementMap filter shared by every image, with a hard drop-shadow that follows the tear. Figures with removed backgrounds get a traced white paper edge instead.
Opening a book expands it to full screen; vertical scroll drives horizontal motion through one collage panel per entry (GSAP ScrollTrigger, pinned + scrubbed, Lenis-smoothed). On touch and reduced-motion it degrades to native swipe-snap panels — and it works with JavaScript disabled.
Signature panels (Messi's goal, the 2022 final) stage their finished collage in CSS, then the scrub engine rewinds the layers and replays them as you scroll. No video — a ball, a hand-drawn net, and a GOAL!! burst, choreographed.
One fixed palette (paper, ink, six loud colors), exactly three type roles (Anton, Permanent Marker, Patrick Hand), one rough.js stroke config, one collage kit. Every screen uses 2–3 loud colors, rotating per section. Busy is designed; random is banned.
A 3/10 can sit in the WTF tier because "unrankable" is a real feeling. Nothing derives one from the other, and nothing ever will — that contradiction is recorded as a feature in the decision log.