Project Context: sadhiin.github.io

Project Context: sadhiin.github.io

Overview

This project is a personal academic portfolio website built using Jekyll, a static site generator. It is based on the Academic Pages template and is designed to be hosted on GitHub Pages. The site showcases the user’s curriculum vitae, publications, talks, teaching experience, and portfolio projects.

Architecture & Technologies

  • Static Site Generator: Jekyll (Ruby-based).
  • Hosting: GitHub Pages.
  • Templating Engine: Liquid.
  • Styling: SCSS (Sass), located in _sass/.
  • Automation: Python scripts (in scripts/ and markdown_generator/) are used to programmatically generate Markdown content for the CV, publications, and portfolio from structured data.

Key Directories & Files

Configuration

  • _config.yml: The master configuration file. Contains site-wide settings like title, author details, navigation menu links, and enabled collections. Restart the server after modifying this file.
  • Gemfile: Defines Ruby dependencies (Jekyll plugins, GitHub Pages gem).
  • package.json: Node.js dependencies (primarily for theme asset maintenance, such as minifying JS).

Content Collections

  • _pages/: Standalone pages (e.g., about.md, cv.md, publications.html).
  • _posts/: Blog posts formatted as YYYY-MM-DD-title.md.
  • _portfolio/: Individual project pages.
  • _publications/: Academic papers and articles.
  • _talks/: Presentations and talks.
  • _teaching/: Teaching positions or courses.
  • _data/: YAML/JSON data files (e.g., navigation.yml, authors.yml) used by the templates.

Layouts & Includes

  • _layouts/: HTML templates wrapping content (e.g., default.html, single.html, archive.html).
  • _includes/: Reusable HTML snippets (e.g., head.html, footer.html, sidebar.html).

Automation

  • scripts/update_site_from_resume.py: A custom Python script that defines the CV, publications, and projects in code and generates the corresponding Markdown files in _pages/, _portfolio/, etc. This serves as a “single source of truth” for resume data.
  • markdown_generator/: Contains scripts (publications.py, talks.py) to generate markdown from TSV files.

Building and Running

Prerequisites

  • Ruby & Bundler
  • Docker (Optional, for containerized run)

Local Development

To serve the site locally and watch for changes:

bundle install
bundle exec jekyll serve

The site will be available at http://localhost:4000.

Using Docker

Alternatively, run the site using the provided Docker setup:

docker compose up

Development Conventions

  • Content Updates: Content is primarily updated via Markdown files. However, for this specific project, verify if the content should be updated in scripts/update_site_from_resume.py and regenerated, rather than editing the Markdown files directly (which might be overwritten).
  • Front Matter: All content files must start with YAML Front Matter (between --- lines) defining metadata like title, layout, date, etc.
  • GitHub Pages: The repository is configured to build automatically via GitHub Pages. Ensure the github-pages gem version in Gemfile matches the deployed environment.