Skip to content

This Site — Dev Log

The portfolio itself. MkDocs static site on Netlify, fed by pre-generated JSON from multiple pipelines.

← Lab

Current — Netlify data architecture

Decoupling pre-generated JSON files from Netlify site builds. Deploys cost 15 credits each and were triggering on every data commit. Moved to Supabase Storage (private bucket sf6-reports) + Netlify Function proxy (netlify/functions/sf6-report.js) so data updates without a rebuild — no [netlify skip] needed since the workflow no longer commits report JSON at all.

  • 2026-07-02 — Supabase Storage private bucket created; Netlify env vars (SUPABASE_URL, SUPABASE_SECRET_KEY) and matching GitHub Actions secrets set
  • 2026-07-02netlify/functions/sf6-report.js added: raw-fetch proxy (no SDK dependency), reads ?cfn=, fetches from Storage with the secret key, 5-min cache header
  • 2026-07-02tools/generate_sf6_reports.py switched from writing local JSON to uploading via urllib (upsert); sf6_reports.yml workflow no longer commits/pushes
  • 2026-07-02sf6-report-echarts.js fetch URL swapped to the Function endpoint
  • 2026-07-02 — Verified: workflow uploads all 14 reports to Storage successfully (HTTP 200)
  • 2026-07-04Migration live and verified. The earlier "native 404" was a wrong-domain test — the site serves from resilient-hotteok-8d3a22.netlify.app, not zach-king-analytics.netlify.app (the latter is only the site_url canonical hint). Function returns real report JSON end-to-end
  • 2026-07-04 — Function now maps Supabase's missing-object response (HTTP 400) to a clean 404 "Report not found" instead of 502 "Upstream error"
  • 2026-07-04 — Data cadence increased from Mon/Wed/Fri to 3×/day (4am / noon / 8pm ET): buckler-scrape (street_fighter repo) then sf6-reports report-gen 30 min later. No Netlify rebuild triggered
  • 2026-07-04 — Deleted the 14 committed report JSON files in docs/assets/data/sf6-reports/; site serves from Storage now (recoverable from git history + live Storage copies)
  • 2026-07-04 — New tracked player wyntrethethird added to tools/generate_sf6_reports.py CFNS (15 players). Full pipeline verified end-to-end: scrape → DB → report-gen → Storage → Function returns real JSON (HTTP 200, 131 KB, 300 matches). Note the generator's CFNS list is keyed by lowercase CFN name, separate from the street_fighter repo's ID-keyed player list — both must be updated to add a player
  • 2026-07-04 — Three more players added (roster now 18): FallenDawn, bugguy, insanity. All verified end-to-end via the Function (HTTP 200 — 31 KB / 92 KB / 119 KB). Procedure now documented in the street_fighter RUNBOOK ("Add a player to the flow")

Follow-ups: reconcile serving domain vs site_url before connecting zachkingdata.com; re-anchor crons +1hr when EST begins (or accept the shift).

Lab redesign — June 2026
  • 2026-06-08 — Lab redesigned: compact .lab-card grid, dashed border, problem/solution sprint framing, dev log sub-pages
Polish & launch — June 2026
  • 2026-06-06 — Pre-launch: nav (11 pages), dark/light, mobile 375px, SF6 report, finance decrypt verified
  • 2026-06-05 — Resume: Director bullet rewritten, jargon removed, AI chips updated
  • 2026-06-05 — Work index bridge sentence; Fitness Tracker case study brought to template standard
  • 2026-06-03 — Mobile nav: Flask logo centered, repo bar removed, drawer layout fixed
  • 2026-06-01 — Dark mode set as default; hero scroll indicator added
Build — May 2026
  • 2026-05-22 — Full visual polish: h3 hierarchy, mermaid scaling, 20+ CSS var conversions, light mode audit
  • 2026-05-22 — Case study template finalized: TL;DR → Personal Statement → How It Works → Under the Hood
  • 2026-05-22 — Resume: skills chips, timeline HTML, LinkedIn link; Playfair Display + Space Grotesk fonts
  • 2026-05-21 — Contact and resume pages rewritten; download buttons removed
  • 2026-05-20 — Personal Finance case study full rewrite; mermaid flow diagrams added
  • 2026-05-19 — Work index intro rewritten; SF6, PF, Recipe Studio card copy updated
  • 2026-05-07 — Initial build: nav restructure, hero, about section, CTAs