CLAUDE.md

CLAUDE.md

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

Project Overview

Academic personal website for Arnab Dey, built with Jekyll (via the github-pages gem) and hosted on GitHub Pages. Forked from the Academic Pages template (based on Minimal Mistakes Jekyll theme).

Build & Development Commands

# Install Ruby dependencies
bundle install

# Serve locally (http://localhost:4000)
bundle exec jekyll serve

# Serve with live reload
bundle exec jekyll liveserve

# Build JavaScript (minify vendor + plugins + _main.js into main.min.js)
npm run build:js

# Watch JS files and rebuild on change
npm run watch:js

Local dev uses _config.dev.yml to override the base _config.yml (sets localhost URL, disables analytics, uses expanded Sass).

Architecture

Static site generator: Jekyll with Liquid templates, kramdown Markdown, and SCSS styling.

Collections (defined in _config.yml): publications, talks, teaching, portfolio. Each collection lives in its corresponding _<name>/ directory with one Markdown file per entry. All collections output individual pages at /:collection/:path/.

Key directories:

  • _pages/ — Static pages (about, cv, contact, projects, publications, teaching)
  • _layouts/ — HTML templates (default.htmlsingle.html → specialized layouts like talk.html)
  • _includes/ — Reusable Liquid partials (author-profile, masthead, footer, sidebar, analytics/comment providers)
  • _sass/ — SCSS source files; compiled via assets/css/main.scss
  • _data/ — YAML data files (navigation.yml for nav menu, authors.yml, ui-text.yml)
  • markdown_generator/ — Python scripts and Jupyter notebooks to generate collection Markdown from TSV data files
  • files/ — Downloadable assets (PDFs); images/ — image assets

Layout hierarchy: compress.htmldefault.html (masthead + footer) → single.html (author profile sidebar + content) → specialized layouts.

Navigation: Defined in _data/navigation.yml. Currently: Publications, Teaching, Projects, CV, Contact.

Content Conventions

Collection entries use YAML front matter with fields like title, collection, permalink, date, venue, excerpt, author_profile, and layout. Temporal content uses date-prefixed filenames (YYYY-MM-DD-title.md). Portfolio items use numbered filenames (portfolio-N.md or .html).

Configuration

All site-wide settings (author info, social profiles, plugins, collection definitions, defaults) live in _config.yml. Changes to _config.yml require restarting the Jekyll server.