CLAUDE.md — 11h.dev
CLAUDE.md — 11h.dev
Overview
11h.dev is a personal blog by Alexis Blandin (alxsbn). Jekyll static site, hosted on GitHub Pages.
Technical Stack
- Platform: Jekyll static site generator
- Theme: Minima v2.5.1 (GitHub Pages version, not v3.x)
- Skin:
auto(dark mode support) - Markdown: Kramdown
- Hosting: GitHub Pages
- Domain: https://11h.dev
- Languages: Bilingual — French (default) + English
GitHub Pages Constraints
GitHub Pages ships Minima v2.5.1, not v3.x.
| Feature | Minima 3.x | Minima 2.5.1 (GitHub Pages) |
|---|---|---|
custom-head.html hook |
Auto-included | Requires manual override |
| Dark mode | Built-in | Via skin: auto |
To include custom head content: _includes/head.html copies Minima’s default and adds `
`.
Project Structure
_posts/
en/ # English posts
fr/ # French posts
_layouts/
home.html # Homepage (bilingual, featured post + grid)
post.html # Post layout (header image, share buttons, author bio)
_includes/
head.html # Minima head override
custom-head.html # Favicon, OG tags, hreflang, Google Fonts
header.html # Nav, language toggle, dark mode toggle
newsletter-form.html
google-analytics.html
youtube.html
_data/
translations.yml # UI strings (FR/EN)
assets/
main.scss
images/ # Post images
alexis-photos/ # Author photos
favicon.svg
11h-logo.png
en/
index.html # EN homepage
about.md # EN about page
fr/
index.html # FR homepage
about.md # FR about page
scripts/
check-bilingual.sh # Verifies FR/EN post parity
Post Format
Posts live in _posts/en/ and _posts/fr/. Naming: YYYY-MM-DD-title-slug.md.
Front matter:
---
layout: post
title: "Post Title"
date: YYYY-MM-DD
categories: [category1, category2]
excerpt: 'Short description for preview'
header_image: "https://images.unsplash.com/photo-XXXXX?w=1600&q=80"
header_image_alt: "Image description"
header_image_credit: "Photographer Name"
header_image_credit_url: "https://unsplash.com/@photographer"
header_image_source: "Unsplash"
header_image_source_url: "https://unsplash.com"
ref: post-slug-identifier
lang: en
---
ref: links FR and EN versions of the same post (must match)lang:enorfr- YAML quoting: use single quotes if excerpt contains double quotes:
excerpt: 'Be "data-driven"' - If it also has apostrophes, double them:
excerpt: 'It''s "data-driven"'
Header Images
Every post needs a header image. See _layouts/post.html for rendering.
| Field | Required | Description |
|---|---|---|
header_image |
Yes | URL (Unsplash ?w=1600&q=80) or local /assets/images/... |
header_image_alt |
Yes | Alt text for accessibility |
header_image_credit |
Recommended | Photographer’s name |
header_image_credit_url |
Recommended | Photographer’s profile URL |
header_image_source |
Optional | Source name (e.g., “Unsplash”) |
header_image_source_url |
Optional | Source website URL |
Plugins
- jekyll-feed (RSS at /feed.xml)
- jekyll-seo-tag
- jekyll-sitemap
- jekyll-redirect-from
Author
- Name: Alexis Blandin (alxsbn)
- Email: alexis.blandin@gmail.com
- GitHub: https://github.com/alxsbn
- LinkedIn: https://linkedin.com/in/alexisblandin
- Instagram: https://www.instagram.com/alxisblandin
Git Workflow
- Main Branch: production
- Feature Branches:
claude/feature-name-sessionID - Commit with descriptive messages
- Push to feature branches before merging
Editorial Content
Before creating or modifying any post, all editorial rules (bilingual obligation, writing voice, banned patterns, rhythm & flow, formatting, pre-commit checklist) are in .claude/rules/editorial/ and loaded automatically.
After creating any post, run:
scripts/check-bilingual.sh
If it fails, create the missing version before committing.