|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## Project Overview |
| 6 | + |
| 7 | +This is Francis' personal portfolio website built with **Jekyll** and hosted on **GitHub Pages**. The site automatically deploys when pushing to the `main` branch. |
| 8 | + |
| 9 | +## Development Commands |
| 10 | + |
| 11 | +### Docker (Recommended) |
| 12 | +```shell |
| 13 | +# Build the Docker image |
| 14 | +docker build -t francisfuzz-site . |
| 15 | + |
| 16 | +# Run the container (includes live reload on port 35729) |
| 17 | +docker run -d --rm --name francisfuzz-site -p 4000:4000 -p 35729:35729 francisfuzz-site |
| 18 | + |
| 19 | +# View logs |
| 20 | +docker logs -f francisfuzz-site |
| 21 | + |
| 22 | +# Stop the container |
| 23 | +docker stop francisfuzz-site |
| 24 | +``` |
| 25 | + |
| 26 | +Site will be available at http://localhost:4000 |
| 27 | + |
| 28 | +### Native Ruby (Alternative) |
| 29 | +```shell |
| 30 | +# Install dependencies |
| 31 | +bundle install |
| 32 | + |
| 33 | +# Run Jekyll server |
| 34 | +bundle exec jekyll serve |
| 35 | + |
| 36 | +# View at http://localhost:4000 |
| 37 | +``` |
| 38 | + |
| 39 | +**Note:** The `eventmachine` gem has known compilation issues on macOS. Use Docker if you encounter installation problems. |
| 40 | + |
| 41 | +## Architecture |
| 42 | + |
| 43 | +### Content Structure |
| 44 | +- **`_posts/`**: Blog posts in Markdown format. Filename convention: `YYYY-MM-DD-title.md` |
| 45 | +- **`_layouts/`**: Reusable HTML templates |
| 46 | + - `default.html`: Base layout with navigation, footer, and inline CSS |
| 47 | + - `post.html`: Wraps blog posts with title and date metadata |
| 48 | +- **`index.md`**: Homepage "About" content |
| 49 | +- **`resume.md`**: Resume/CV page |
| 50 | +- **`posts.md`**: Blog posts index |
| 51 | +- **`public/`**: Static assets (fonts, favicon, feed.xml) |
| 52 | + |
| 53 | +### Jekyll Configuration (`_config.yml`) |
| 54 | +- **Permalink structure**: `/posts/:year/:month/:day/:title/` |
| 55 | +- **Plugins**: `jekyll-feed` (RSS), `jekyll-seo-tag` (meta tags) |
| 56 | +- **Live reload disabled** to avoid eventmachine dependency issues |
| 57 | +- Kramdown markdown processor |
| 58 | + |
| 59 | +### Layout System |
| 60 | +The site uses a two-layer layout hierarchy: |
| 61 | +1. `default.html` provides the base structure (header, nav, footer, CSS) |
| 62 | +2. `post.html` inherits from `default.html` and adds article markup with date formatting |
| 63 | +3. Pages specify their layout via front matter: `layout: default` or `layout: post` |
| 64 | + |
| 65 | +### Styling |
| 66 | +All CSS is inline in `_layouts/default.html` (lines 10-45). Uses system fonts and GitHub-inspired color scheme (`#0366d6` for links, `#e1e4e8` for borders). |
| 67 | + |
| 68 | +## Deployment |
| 69 | + |
| 70 | +GitHub Pages automatically builds and deploys from the `main` branch. No manual build or deployment steps required. |
0 commit comments