CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Personal blog (“Tales of a Gamer Dad”) at didik.id, built with Jekyll and deployed via Kamal to a self-hosted nginx container.
Commands
- Dev server:
bin/dev(runsbundle exec jekyll serve --livereload --incremental) - Deploy:
bin/deploy(runsbundle exec kamal deploy) - Create post/draft:
bin/post(interactive Ruby script — creates GitHub issue for comments, generates front matter) - Attach image:
bin/attach(resizes image to max 800x600, saves toassets/images/YYYY/MM/DD/, outputs markdown) - Health check:
bin/doctor(validates GitHub token and API access for the comments repo) - Build site:
bundle exec jekyll build
Architecture
- Jekyll with
github-pagesgem andremote_theme: devich/quick@0.0.1 - Ruby 3.3.10 (managed via mise)
- Styling: Pico.css (classless, from CDN) + custom CSS in
assets/css/ - Deployment: Kamal 2.0 → Docker (nginx serving
_site/) →didik.idwith SSL. Config inconfig/deploy.yml - Comments: GitHub Issues-based. Posts have
github_comments_issueidin front matter, rendered by_includes/github-comments.html. Comments repo:firewalker06/didik-id-comments - Layouts:
default.html(base with OG/Twitter meta, Google Fonts, Pico.css) →post.html(article with schema.org markup + comments)
Content Conventions
- Posts go in
_posts/asYYYY-MM-DD-slug.md, drafts in_drafts/asslug.md - Front matter fields:
title,slug,date_published,date_updated,description,github_comments_issueid,draft(drafts only) - Images stored in
assets/images/YYYY/MM/(orYYYY/MM/DD/when usingbin/attach) - Blog language is primarily Indonesian
- Permalink style:
pretty(no.htmlextensions)
Environment
GITHUB_TOKENrequired in.envforbin/postandbin/doctor(used to create comment issues via GitHub API)