KahWee - Web Development, AI Tools & Tech Trends

Expert takes on AI tools like Claude and Sora, modern web development with React and Vite, and tech trends. By KahWee.

How Claude Code Built This Blog - Part 1

I recently used Claude Code to build this static blog from scratch, focusing on technical implementation rather than using an off-the-shelf solution. This is Part 1 covering getting started and architecture decisions. Part 2 covers implementation and deployment.

Getting Started with Claude Code

I'll admit, I was nervous when inputting my credit card details. The uncertainty of potential costs loomed large, but curiosity won out. My goal was clear: I wanted to use Cloudflare Pages, something I'd been eyeing for a while, coupled with Node.js for markdown-to-HTML conversion.

Rather than becoming an expert in Node.js static site generation or getting locked into higher-level frameworks like Hexo or Jekyll, I wanted a set of custom Node.js scripts to process markdown files with particular emphasis on syntax highlighting.

Claude Code quickly proved its worth: rapid prototyping (swiftly set up the directory structure and base scripts, saving significant time), customization potential (the generated code serves as a solid foundation that I can easily modify), and cost-effective (at around $10, the time saved justified the expense).

The Architecture

Claude created a TypeScript-based static site generator with these key components:

Markdown processing: Full support for frontmatter, syntax highlighting, and tag management

Templating system: Nunjucks templates with SCSS styling

Build pipeline: Scripts for development, building, and deployment

Cloudflare integration: Direct deployment to Cloudflare Pages

Configuration and Package Selection

Claude created a clean configuration system in config.ts that defines site settings:

const someTheme = {
  primaryColor: "#6b47ed",
  secondaryColor: "#f5f2ff",
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
};

export const config: SiteConfig = {
  title: "KahWee",
  description: "Thoughts on web development, programming, and technology",
  baseUrl: "https://kahwee.com",
  theme: { ...someTheme },
};

Package selection: Claude Code included dependencies for markdown processing (marked, marked-highlight, gray-matter, front-matter), syntax highlighting (highlight.js), HTML manipulation (cheerio, sanitize-html), templating (nunjucks), styling (sass), and utilities (fs-extra, dotenv, commander).

While some packages like cheerio and node-fetch seemed superfluous, the overall setup was well-planned. The application structure follows a modern architecture with clear separation of concerns:

├── app/
│   ├── components/         # Reusable UI components
│   ├── routes/            # Route handlers and pages
│   ├── models/            # Data access layer
│   └── utils/            # Helper functions
├── public/               # Static assets
└── templates/           # Nunjucks templates

Continue to Part 2 for the implementation details, challenges faced, and deployment workflow.