Repository Guidelines

Project Structure & Module Organization

Author-facing pages live in _pages/, reusable snippets in _includes/, and layouts in _layouts/. Posts belong in _posts/ and should follow YYYY-MM-DD-title.md filenames for correct ordering. _config.yml drives navigation, analytics, and profile metadata, while _data/ stores YAML powering publications, projects, and other Liquid-driven lists. Customize styling with _sass/ partials plus assets in assets/ and images/. Automation helpers (Google Scholar crawler, blog updater) sit in google_scholar_crawler/ and the repo root.

Build, Test, and Development Commands

  • bundle install: installs the Ruby gems declared in Gemfile.
  • bash run_server.sh: wraps bundle exec jekyll liveserve with livereload at http://127.0.0.1:4000/.
  • bundle exec jekyll build: creates the production _site/ output; run before committing.
  • bundle exec jekyll doctor: lint configuration, missing assets, and invalid front matter.
  • python3 updateBlogs.py: refresh local blog metadata when adjusting the ingest pipeline.

Coding Style & Naming Conventions

Use two-space indentation for Liquid, HTML, and SCSS, and only mix Markdown with inline HTML when structural hooks are needed. Keep SCSS variables camelCase, CSS classes kebab-case, and front matter keys snake_case for predictable Liquid access. Name data files descriptively (_data/projects.yml, _data/talks.yml) and expose them via {% assign %} to avoid hard-coded lists; a local bundle exec jekyll build should stay clean before pushing.

Testing Guidelines

There is no automated suite, so rely on deterministic builds. Run bundle exec jekyll build --trace after changing layouts, includes, or _config.yml, and fix Liquid/Markdown errors before committing. Preview via bash run_server.sh, manually verify /, /projects, /publications, plus any new routes on desktop and mobile, and follow up with bundle exec jekyll doctor when _data/ changes.

Commit & Pull Request Guidelines

Follow the terse, imperative commit style already in history (update info, fix nav links). Group related template, data, and asset edits together so reviewers see the full change set. Pull requests need a short summary, screenshots for visual tweaks, linked issues, and confirmation that bundle exec jekyll build succeeded; flag any scripts (Scholar crawler, blog updater) that must run afterward.

Configuration & Automation Notes

Keep analytics IDs, Firebase credentials, and GOOGLE_SCHOLAR_ID in GitHub Actions secrets rather than the repo. Restart the live server after editing _config.yml, update any mirrored values in docs/, and annotate new services (analytics, comments, counters) with usage notes so future automation knows which keys are required.