CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a personal blog website built with Jekyll and hosted on GitHub Pages. It uses the “So Simple” theme by Michael Rose and is deployed at https://oliverbarreto.com.
The site features blog posts primarily in the _posts/blog/
directory, with content about technology, productivity, and development topics.
Blog - Website Structure
The blog website has the following structure defined in the _data/navigation.yml
file:
- title: Home
url: / # This is the home page - index.md file
- title: Blog
url: /posts/ # This is the home page - posts.md file. Blog posts are handled by the theme, we just need to create a file for each post in the _posts/blog/ directory
- title: Projects # This is a page about relevant projects that I have done, or currently working on.
url: /projects/ # This is the projects page - projects.md file
- title: CallsOnYourMac # This is a Product Page of one of my personal projects: "Calls On Your Mac", a macOS app that allows you to make phone/video calls from your Mac using Continuity and the iPhone. It also allows users to manage Google Meet/Webex/Zoom.
url: /callsonyourmac/ # This is the calls on your mac page - callsonyourmac.md file
- title: Search
url: /search/ # This is the search page - search.md file. This is a simple search page that allows you to search the blog posts.
Development Commands
Local Development Setup
Important: Before running locally, you must modify _config.yml
to enable the local theme:
- Uncomment this line:
theme: jekyll-theme-so-simple
- Keep this line:
remote_theme: "mmistakes/so-simple-theme@3.2.0"
Warning: Before pushing to GitHub, you must comment out the local theme line again to prevent GitHub Actions failures.
Running the Site Locally
# Build and run with Docker (recommended)
docker compose build --no-cache
docker compose up -d
The site will be available at http://localhost:4000. The Docker container has hot reloading enabled, so changes to local files will be reflected automatically.
Stopping Local Development
docker compose down
Project Architecture
Directory Structure
_posts/blog/
- All blog posts in Markdown format with YAML front matter_data/
- Site configuration data (navigation, authors, text)_config.yml
- Jekyll configuration and site settingsimages/
- Static assets including blog post images inimages/blogposts/
downloads/
- Downloadable files and assets
Theme Configuration
The site uses a remote theme setup that switches between local and production modes:
- Local development: Uses
theme: jekyll-theme-so-simple
- Production (GitHub Pages): Uses
remote_theme: "mmistakes/so-simple-theme@3.2.0"
Content Management
Blog posts follow Jekyll conventions:
- File naming:
YYYY-MM-DD-title.md
in_posts/blog/
- YAML front matter with layout, title, and other metadata
- Images stored in
images/blogposts/
with descriptive filenames - Posts are automatically organized by date and categories
Deployment
The site auto-deploys to GitHub Pages when changes are pushed to the main branch. Ensure the _config.yml
is set to production mode (local theme commented out) before pushing.
Important Notes
- Always verify theme configuration before pushing to prevent build failures
- Images should be optimized and placed in appropriate subdirectories
- The site uses Google Analytics (UA-46702055-1) and Disqus comments
- Navigation is configured in
_data/navigation.yml