rob2rhyme.app
This portfolio, plus the private admin office behind it.
Overview
A Next.js 16 portfolio that runs on an authored content registry rather than a live API scrape, so every page renders completely even when GitHub is unreachable. Behind an access code sits an admin office for the contact inbox, invite codes, and GitHub security alerts.
The problem
The first version generated every card straight from the GitHub API and hid the whole site behind a 6-digit code. That meant nothing was linkable or shareable, cold visitors hit a code wall, and a missing token produced an empty homepage that stayed empty for the length of the cache window.
The approach
Inverted the data flow: an in-repo content registry is the source of truth, and GitHub is optional enrichment layered on top. The access code moved off the front door and onto a private section, so the work is public while private material stays gated. Session cookies are signed with HMAC-SHA256 rather than the reversible encoding that shipped originally.
Outcome
- Pages render completely with no GitHub token — verified in CI by building with the token unset
- One batched GraphQL query replaces 48 REST calls per revalidation
- Public, linkable project pages instead of an in-card toggle
- Light/dark/system theming with three accents, applied before first paint
What it does
Authored project registry
Each project is a typed module with its own thumbnail, snapshots, stack, timeline and case study. Narrative blocks are optional, so a half-written entry still renders cleanly.
Resilient GitHub enrichment
Live stars, languages and commit dates are merged in when available and silently omitted when not. No page depends on the API being reachable.
Admin office
Contact submissions land in a private inbox with an audit trail and email replies, alongside invite-code management and a Dependabot alert dashboard.
Theming without a dependency
A token layer plus a blocking inline script — light, dark and system, three accent palettes, no flash of the wrong theme and no third-party library.
Snapshots



Ask about rob2rhyme.app
Want something like this, or curious how a piece of it works? Send a note — it reaches me tagged with this project, so I have the context before I reply.