CLAUDE.md

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

Personal academic website for Yanis Bekhti (PhD candidate in Economics). Built with Jekyll and the Academic Pages theme, deployed to GitHub Pages at https://yanisbkt-econ.github.io.

Development Commands

Local development (Docker — preferred):

docker build -t jekyll-site . && docker run -p 4000:4000 -v $(pwd):/site jekyll-site

Local development (Ruby/Jekyll directly):

bundle install
bundle exec jekyll serve --watch

JavaScript build:

npm install
npm run build:js       # Minifies JS into assets/js/main.min.js
npm run watch:js       # Watch and rebuild on changes

There are no lint or test commands for this project.

Architecture

Content Structure

Site content lives in three places:

  • _pages/ — Hand-authored Markdown pages (About, Research, Teaching, Talks, Miscellaneous). These use layout: archive or layout: single with author_profile: true.
  • Jekyll collections (_publications/, _talks/, _teaching/, _portfolio/) — Individual markdown files, one per item.
  • markdown_generator/ — Python scripts that convert TSV/BibTeX data files into the collection markdown files. Run these when adding publications or talks from structured data.

Templating

  • _layouts/ — Page-level HTML templates (default → single/archive/splash → compress).
  • _includes/ — Reusable partials: masthead.html (top nav), author-profile.html (sidebar), footer.html, head.html.
  • _data/navigation.yml — Controls the top navigation bar items.
  • _data/authors.yml — Author profile data.

Styling

All styles live in _sass/. Entry point is assets/css/main.scss which imports the partials. Key files:

  • _variables.scss — Colors, fonts, breakpoints.
  • _page.scss, _sidebar.scss, _navigation.scss — Main layout styling.

JavaScript

assets/js/_main.js initializes jQuery plugins (sticky nav, smooth scroll, FitVids, Magnific Popup image lightbox). The build script bundles this with vendor libraries into assets/js/main.min.js. Edit _main.js, never edit main.min.js directly.

Key Configuration

_config.yml controls everything site-wide: author info, social links, SEO metadata, analytics, collection defaults, and plugin settings. Changes here affect every page.

Collapsible Abstracts Pattern

Research page (_pages/Research.md) uses raw HTML <details>/<summary> tags inside Markdown for collapsible abstracts. Follow the same pattern when adding new research items.