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 contentcv.md: Curriculum Vitae pagepublications.md: Publications listing pageresearch.md: Research overview pagecontact.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
_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 barauthor-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
- Publications
- CV
- Contact
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
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/
