seanpatrickmay.github.io
2024 – Present
- Next.js
- React
- Tailwind CSS
- GitHub Actions
1,751garmin activities logged, the history behind the movement map
public/activity-places.json, the source for 1,751 garmin activities logged, the history behind the movement map (opens in new tab)0.95the Lighthouse accessibility score every page CI audits must clear
lighthouserc.json, the source for 0.95 the Lighthouse accessibility score every page CI audits must clear (opens in new tab)
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
- 1scheduled workflows fetch each feed and commit JSON into public/
- 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
- 3pages import that JSON at build time, so every route is static HTML
- 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