This repository contains the source for a Jekyll-based personal site.
Use Docker for local development and validation. Do not treat host Ruby or Bundler as the canonical path for this repo.
- A running Docker-compatible daemon such as Docker Desktop or Rancher Desktop
- Port
4000available on your machine
docker compose upOpen http://localhost:4000.
On the first run, startup can take longer because Docker may need to pull the jekyll/jekyll:latest image and install gems into the container volume.
Run a one-off build in Docker before finishing changes:
docker compose run --rm jekyll jekyll builddocker compose downWhile docker compose up is running, Jekyll watches source files and rebuilds automatically.
index.html: main landing page content and sections_config.yml: site-level content and structured data such aswho_am_i,what_am_i, andresume_posts/: blog postsblog.md: blog index page_layouts/: custom layouts used by the site when referencedcss/style.css: site-specific styling_site/: generated output; not a source directory.jekyll-cache/: local cache; not a source directory
- Update homepage copy or sections:
index.html - Update biography, resume entries, or site-level metadata:
_config.yml - Update the blog landing page:
blog.md - Add or edit a blog post:
_posts/ - Adjust site styling:
css/style.css
- Prefer source edits in content, config, layouts, and site CSS.
- Never edit
_site/or.jekyll-cache/. - Do not edit third-party vendor assets by default unless the task explicitly asks for it. This includes Bootstrap bundles, old jQuery/plugins, and Font Awesome assets under
css/,js/, andfonts/. - Some values in
_config.ymlstill come from the default Jekyll scaffold. Do not clean them up unless the task explicitly includes config cleanup.
- Contributor workflow and validation rules: CONTRIBUTING.md
- Agent-oriented quick rules: AGENTS.md
- Source-of-truth file map: docs/repo-map.md
- If
docker composecannot connect to the daemon, start Docker Desktop or Rancher Desktop first. - If startup gets stuck after dependency changes, reset the container volume and try again:
docker compose down -v
docker compose up