colophon
A page about this site.
Built with Next.js 15 (App Router, RSC, ISR), React 18, and TypeScript. Most styling is hand-rolled — CSS variables + a small set of utility classes, with Tailwind present only where it's already pulled in by a transitive dep. Hosted on Netlify via @netlify/plugin-nextjs.
Blog content lives in a Notion database (the source of truth — no MDX in the repo). On hourly revalidation the site fetches each post's body via the Notion API, converts to markdown with notion-to-md, then runs it through remark + remark-gfm + remark-html. Reading time comes from reading-time.
Backend: Supabase for post views, reactions, and the guestbook. MiniSearch powers the client-side command palette (⌘K) and full-text search across posts. Framer Motion for the few transitions worth animating. Anthropic SDK for repo summary generation on the activity pages.
Typography: JetBrains Mono for almost everything (UI, captions, code), Space Grotesk for headings and UI body, and Fraunces for the occasional editorial title. All served via next/font with self-hosting.
Palette: warm paper (#efeae0), ink (#161410), and a single terminal-green accent (#1c7a45). Dark mode flips paper for ink and warms the accent slightly.
Source is public: github.com/notjaman/JM-Portfolio. Open an issue if something's broken or off — issues are how I triage.