Skip to content
Thyago Coan
Projects

thyagocoan.com

This site. A statically exported Next.js app with MDX content, build-time GitHub data, and a CI pipeline that typechecks, deploys and audits every push.

maintainedNext.js · TypeScript · Tailwind · Cloudflare

The site you're reading. Built to be publishable with git push and otherwise require no attention.

#Design constraints

I set three rules before writing any code, and they decided most of the architecture:

  1. No runtime. Every route is pre-rendered to static HTML. Nothing to keep running, nothing to patch, nothing that can fall over at 3am.
  2. Content as files. Posts are MDX in the repo, so drafts live on branches and edits show up in diffs.
  3. A failing integration must not fail the build. External data is fetched at build time and degrades to empty rather than throwing.

#Stack

  • Next.js with output: 'export' — emits a plain static directory
  • Tailwind v4 with the theme in CSS custom properties, not a JS config
  • MDX rendered through next-mdx-remote/rsc, highlighted by Shiki at build
  • Cloudflare Pages for hosting, GitHub Actions for CI, deploy, and a Lighthouse audit on pull requests

#Things worth stealing

The dark mode is a blocking inline script that sets a class on <html> before first paint. It is unfashionable and it is the only approach that doesn't flash white on navigation.

The frontmatter reader throws on a missing title, date or summary. Failing the build is a better outcome than discovering an untitled post in the RSS feed.

There's a longer writeup in How this site is built.