I've been putting off having a personal site for years. The usual traps: picking a CMS that becomes a maintenance burden, choosing a framework that outlives its usefulness, or just overthinking it and shipping nothing.
This time I kept it simple. Pure HTML, CSS, and JavaScript. No build tools. The intelligence lives outside the stack entirely — in Claude Code.
The stack
- GitLab — free repos, built-in CI/CD, and GitLab Pages for static hosting
- Cloudflare — domain at cost (~$10/yr), free CDN, free SSL
- Claude Code — writes and maintains everything
No npm dependencies. No Node.js build step. Files on disk, pushed to git, served directly.
How the workflow feels
Open the repo, run claude, describe what you want:
> Write a post about distroless containers and CI security.
Create the file in blog/posts/ and update blog/index.html.
Claude Code reads the existing files for context, writes the post, updates the listing. Review the diff, git push, live in two minutes.
The mental shift is treating Claude Code like a contractor who already knows your codebase.
The key is CLAUDE.md at the root of the repo — a briefing document covering site structure, design rules, naming conventions, and tone. Every session starts with Claude reading it.
Cost
Domain ~$10/yr via Cloudflare Registrar. GitLab and Cloudflare free tiers cover everything else.