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/andmarkdown_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 asYYYY-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.pyand 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 liketitle,layout,date, etc. - GitHub Pages: The repository is configured to build automatically via GitHub Pages. Ensure the
github-pagesgem version inGemfilematches the deployed environment.
