Skip to content
All articles

How this site is built

ArticleTags: #meta #nextjs #claude-code #ci

This site is a personal project, and it is also a place to practise working with AI agents and CI/CD. This post describes how it is set up.

Stack

The site uses Next.js with the App Router and TypeScript. Styling is done with Tailwind CSS. Blog posts are MDX files in content/blog/. There is no database, no CMS and no login. Images and videos are stored in the repository; videos are served as local MP4 files.

The code is in a public GitHub repository. Vercel deploys the site automatically from the main branch.

Design

The design brief calls the idea "Engineer's Sketchbook". A precise technical layer, with monospace labels, hairlines, dimension lines and coordinates, overlaps with a sketch layer of ink and pencil drawings.

The handwriting you see on the site is my own. I turned it into a font called Sahan Hand with Calligraphr.

Working with Claude Code

I use three subagents. ui-designer handles layout and styling, content-writer handles texts, and code-reviewer checks the changes before a pull request is opened. A hook runs Prettier on every file Claude edits. For bigger tasks, Claude states a plan first, and I approve it before anything is built.

Rules and CI/CD

The main branch is protected on GitHub, so changes only arrive through pull requests. One task is one branch and one pull request.

A GitHub Action runs on every pull request and executes these checks:

bash
npm run lint
npm run format:check
npm run typecheck
npm run build
npm run test:e2e

The last command runs the Playwright end-to-end tests. Once a pull request is merged, Vercel deploys the result.