Website Directory Structure Documentation
Website Directory Structure Documentation
This is a Jekyll-based academic website hosted on GitHub Pages, forked from the Minimal Mistakes Jekyll Theme. This document provides a comprehensive overview of the directory structure and the purpose of each component.
Overview
This website is built using Jekyll, a static site generator that transforms plain text into static websites. The site is configured to work with GitHub Pages and uses the Academic Pages template.
Root Directory Files
Configuration Files
_config.yml: Main Jekyll configuration file containing site-wide settings including:- Site metadata (title, description, URL)
- Author information and social media links
- Collections definitions (teaching, publications)
- Plugin configurations
- Markdown processing settings
- Default layouts for different content types
_config.dev.yml: Development-specific configuration overridesGemfile: Ruby dependencies specification for Jekyll and pluginspackage.json: Node.js dependencies (if any JavaScript tooling is used)
Documentation Files
README.md: Instructions for using and customizing the templateCHANGELOG.md: Record of changes and updates to the templateCONTRIBUTING.md: Guidelines for contributing to the projectLICENSE: MIT License information
Other Root Files
.gitignore: Specifies files and directories Git should ignoretalkmap.ipynb: Jupyter notebook for generating talk location mapstalkmap.py: Python script version of the talkmap generator
Directory Structure
Content Directories
_pages/
Contains standalone pages that make up the main navigation of the website:
about.md: About/homepage content covering undergraduate radiotherapy work, early PhD research in magnet design and computational geometry, and future interests in inverse optimization, robust optimization, and Markov decision processescv.md: Curriculum Vitae pageresearch.md: Working Papers page listing two projects and their coauthorscontact.md: Contact information pagetalks.html: Talks and presentations pagetalkmap.html: Geographic visualization of talksmarkdown.md: Markdown syntax examples/guide404.md: Custom 404 error pageterms.md: Terms of service or usage
Archive pages:
archive-layout-with-content.mdcategory-archive.htmlcollection-archive.htmlpage-archive.htmltag-archive.htmlyear-archive.htmlnon-menu-page.md: Example page not in main navigation
_archive/
Source backups excluded from the published site in _config.yml:
research-radiotherapy-2026-10-30.md: Exact copy of the original radiotherapy Research page, saved before replacing it with Working Papers. Its referenced images remain inimages/.
_posts/
Contains blog posts in markdown format. Posts follow Jekyll naming convention: YYYY-MM-DD-title.md
Current posts:
2012-08-14-blog-post-1.md2013-08-14-blog-post-2.md2014-08-14-blog-post-3.md2015-08-14-blog-post-4.md2199-01-01-future-post.md(future-dated post)
_talks/
Contains talks and presentations in markdown format:
2012-03-01-talk-1.md2013-03-01-tutorial-1.md2014-02-01-talk-2.md2014-03-01-talk-3.md
_drafts/
Contains draft posts that are not yet published:
post-draft.md
Layout and Design Directories
_layouts/
HTML templates that define the structure of different page types:
default.html: Base layout for all pagessingle.html: Layout for single posts/pagesarchive.html: Layout for archive pagesarchive-taxonomy.html: Layout for category/tag archivessplash.html: Full-width splash page layouttalk.html: Layout specifically for talk pagescompress.html: HTML compression wrapper
_includes/
Reusable HTML components that can be included in layouts:
Main Components:
head.html: HTML head section with meta tagshead/custom.html: Custom head additionsmasthead.html: Site header/navigation bar, with a Home link pointing to the homepageauthor-profile.html: Author bio sidebarseo.html: SEO meta tagsscripts.html: JavaScript includesbreadcrumbs.html: Breadcrumb navigation
Archive Components:
archive-single.html: Single item in archive listingsarchive-single-cv.html: CV-style archive itemarchive-single-talk.html: Talk archive itemarchive-single-talk-cv.html: CV-style talk item
Navigation and Lists:
nav_list: Navigation list generatorpost_pagination.html: Post pagination controlstag-list.html: List of tagscategory-list.html: List of categories
Other Includes:
page__hero.html: Hero image/header componentgallery: Image gallery componentfeature_row: Featured content rowgroup-by-array: Array grouping utilitybase_path: Base path utilityanalytics-providers/custom.html: Custom analytics code
_sass/
Sass/SCSS stylesheets organized by component:
Main Stylesheets:
_base.scss: Base styles and resets_reset.scss: CSS reset_variables.scss: Sass variables (colors, fonts, etc.)_mixins.scss: Reusable Sass mixins
Component Styles:
_masthead.scss: Header styling_navigation.scss: Navigation styles_footer.scss: Footer styling_sidebar.scss: Sidebar styles_archive.scss: Archive page styles_page.scss: Page-specific styles_buttons.scss: Button styles_forms.scss: Form styling_tables.scss: Table styles_notices.scss: Notice/alert styles_syntax.scss: Code syntax highlighting_animations.scss: CSS animations_utilities.scss: Utility classes_print.scss: Print styles
Vendor Styles (_sass/vendor/):
breakpoint/: Responsive breakpoint managementfont-awesome/: Icon font stylesmagnific-popup/: Lightbox/popup stylessusy/: Grid system (legacy)
Data and Assets
_data/
YAML data files for site configuration:
navigation.yml: Navigation menu structure and linksauthors.yml: Author information for multi-author sitesui-text.yml: UI text strings for internationalization
_data/comments/: Static comments organized by post:
layout-comments/markup-syntax-highlighting/welcome-to-jekyll/
assets/
Compiled assets directory:
css/: Compiled CSS filesjs/: JavaScript filesfonts/: Web fonts
images/
Image files for the website:
- Profile images:
Quadrada_original.jpg,bio-photo.jpg,bio-photo-2.jpg,profile.png - Content images: various PNG, JPG, and GIF files
- Favicon and touch icons:
browserconfig.xml,manifest.json, various icon sizes
files/
Downloadable files served from the website:
CV.pdf: PDF version of CV
Utility and Generator Directories
markdown_generator/
Python scripts and Jupyter notebooks for generating markdown files from TSV data:
Publications:
publications.py: Python script to generate publication pagespublications.ipynb: Jupyter notebook versionpublications.tsv: TSV data file with publication informationPubsFromBib.ipynb: Generate from BibTeXpubsFromBib.py: Python script version
Talks:
talks.py: Python script to generate talk pagestalks.ipynb: Jupyter notebook versiontalks.tsv: TSV data file with talk information
Other:
readme.md: Usage instructions
talkmap/
Geographic visualization of talks/presentations:
map.html: Interactive map HTMLorg-locations.js: Location data for map markersleaflet_dist/: Leaflet.js library files for mapping
Special Directories
.git/
Git version control directory (standard Git repository data)
.claude/
Claude Code configuration directory:
settings.local.json: Local settings for Claude Code
Jekyll Collections
As defined in _config.yml, this site uses collections for organizing content:
teaching: Teaching-related content (output: true)publications: Publication entries (output: true)
Note: The actual collection directories (_teaching/, _publications/) may not exist yet or may be generated.
Content Management Workflow
Adding New Content
- Blog Posts: Create new markdown files in
_posts/following the naming conventionYYYY-MM-DD-title.md - Pages: Add new pages to
_pages/and update_data/navigation.ymlif needed - Talks: Add new talks to
_talks/or use the markdown generator scripts - Publications: Add to
_publications/or use the markdown generator scripts - Files: Upload PDFs and other downloads to
files/ - Images: Add images to
images/
Using Markdown Generators
The markdown_generator/ directory contains tools to batch-generate content:
- Edit the TSV files with your data
- Run the Python scripts or Jupyter notebooks
- Generated markdown files will be created in the appropriate collections
Navigation Structure
The main navigation is defined in _data/navigation.yml and includes:
- Research (Working Papers)
- CV
- Contact
The standalone Publications page has been removed. The radiotherapy Research page is preserved in _archive/.
Building and Deployment
Local Development
bundle install
bundle exec jekyll serve
The site will be available at http://localhost:4000
GitHub Pages Deployment
The site automatically builds and deploys when pushed to the master branch on GitHub.
Key Configuration Points
Site Information
Edit _config.yml to update:
- Site title and description
- Author name and bio
- Social media links
- Google Analytics ID
Navigation
Edit _data/navigation.yml to modify the main menu
Author Profile
Update the author section in _config.yml. The profile sidebar displays only LinkedIn, GitHub, and Google Scholar; location, ResearchGate, and ORCID are unset. The profile links show only icons in one horizontal row, ordered LinkedIn, GitHub, then Google Scholar. Each link retains an accessible name and hover title in _includes/author-profile.html. The .author__urls rules in _sass/_sidebar.scss provide approximately 32px desktop icons centered in 44px link targets, with the row centered beneath the centered profile name, including in the mobile Follow menu. The name below the photo uses 1.4rem text (about 25px on desktop). The main stylesheet URL in _includes/head.html includes the build timestamp so new deployments refresh cached styling.
Styling
Customize colors and fonts in _sass/_variables.scss
Important Notes
- The site uses kramdown for markdown processing
- Syntax highlighting is provided by Rouge
- Future-dated posts (like
2199-01-01-future-post.md) won’t appear until their date - The
future: truesetting in_config.ymlallows future-dated posts to be shown
Resources
- Jekyll Documentation: https://jekyllrb.com/docs/
- Minimal Mistakes Theme: https://mmistakes.github.io/minimal-mistakes/
- Academic Pages: https://academicpages.github.io/
