Skip to content

seanpatrickmay.github.io

2024 – Present

  • Next.js
  • React
  • Tailwind CSS
  • GitHub Actions

A static-exported Next.js site that still feels current, because scheduled workflows write fresh JSON into the repo rather than a server answering at request time. The look is a scrapbook: kraft board, pinned paper, rubber-stamped headings, and project covers drawn as index cards in SVG so they cost nothing and follow dark mode.

what i built

  • a static Next.js export with a home page, a project wall, and a page per project, all driven from one projects.json
  • scheduled GitHub Actions that refresh Garmin, Spotify, Hardcover and Duolingo into committed JSON, with a data-loss guard so a failed fetch never blanks a card
  • two maps from the same projection code: an aged nautical chart with flags for work and study, and plotting paper with weighted dots for everywhere I've run, ridden or skied
  • a Lighthouse CI gate that fails the build on accessibility, SEO or best-practices regressions, and warns rather than fails on performance because runner load is noisy

how it works

  1. 1scheduled workflows fetch each feed and commit JSON into public/
  2. 2a one-off local script pages the full Garmin history, resolves each place from its own GPS, and writes only a coarse per-place centroid
  3. 3pages import that JSON at build time, so every route is static HTML
  4. 4GitHub Pages serves the built output

findings

  • the Garmin feed is the one that breaks: Garmin rate-limits datacenter IPs, so history is refreshed by hand from a laptop and the page shows a staleness badge instead of pretending

what's next

  • per-project OG images, rendered from the same SVG covers at build time