A minimal, responsive template for publishing open-source educational resources on GitHub Pages. Optimized for developer readability, SEO, and AI-agent parsing.
prefers-color-schemeClone or fork this repository
git clone https://github.com/GraphTechnologyDevelopers/gh-pages-template.git
cd gh-pages-template
Update configuration
Edit _config.yml and update:
title - Your site titledescription - Site descriptionurl - https://{username}.github.io (or your custom domain)baseurl - /{repository-name} for project sites, or "" for user/org sitesCustomize footer links (optional)
Edit _includes/footer.html to update or add footer links.
Add your content
index.md for the homepage.md files for additional pagesassets/ directoryDeploy
https://{username}.github.io/{repository-name}.
├── _config.yml # Jekyll configuration
├── _layouts/ # HTML layouts
│ ├── default.html # Default page layout
│ └── page.html # Content page layout
├── _includes/ # Reusable components
│ ├── head.html # Head section with meta tags
│ └── footer.html # Footer with links
├── assets/ # Static assets
│ ├── css/
│ │ └── styles.css # Custom styles
│ ├── js/
│ │ └── main.js # JavaScript functionality
│ └── images/ # Image files
├── pages/ # Additional pages
│ └── getting-started.md
├── index.md # Homepage
├── robots.txt # SEO robots file
├── .github/
│ └── workflows/
│ └── pages.yml # GitHub Actions deployment
└── README.md # This file
Create new .md files anywhere in the repository. They'll automatically use the page layout:
---
title: My New Page
---
# My New Page
Your content here...
Use triple backticks with language identifiers:
```python
def hello():
print("Hello, World!")
```
Use Mermaid syntax for diagrams:
```mermaid
graph TD
A[Start] --> B{Decision}
B -->|Yes| C[Action 1]
B -->|No| D[Action 2]
```
Place images in assets/images/ and reference them:

Edit assets/css/styles.css to customize the theme. The CSS uses variables for easy customization:
:root {
--color-bg: #ffffff;
--color-text: #1a1a1a;
--color-link: #0066cc;
/* ... */
}
Modify _layouts/default.html or _layouts/page.html to change page structure.
See _config.yml for all available configuration options. Key settings:
title - Site titledescription - Site description for SEOurl / baseurl - GitHub Pages URL configurationplugins - Jekyll plugins (SEO, sitemap)This template includes:
Add page-specific SEO in front matter:
---
title: Page Title
description: Page description for search engines
keywords: keyword1, keyword2
---
The GitHub Actions workflow (/.github/workflows/pages.yml) automatically:
mainNo manual deployment steps needed!
To enable:
main branchTo test locally (requires Ruby 3.0+ and Jekyll):
Install Ruby 3.0 or newer. Recommended methods:
Using Homebrew (macOS):
brew install ruby
Using rbenv (recommended):
# Install rbenv
brew install rbenv ruby-build
# Install Ruby 3.0+
rbenv install 3.3.0
rbenv local 3.3.0
Using asdf:
# Install asdf plugin
asdf plugin add ruby
# Install Ruby 3.0+
asdf install ruby 3.3.0
asdf local ruby 3.3.0
# Install dependencies (local to project, no sudo needed)
bundle install --path vendor/bundle
# Serve locally (without baseurl prefix for easier testing)
bundle exec jekyll serve --baseurl ""
# Or test with baseurl to match production:
bundle exec jekyll serve
# Visit http://localhost:4000
# (or http://localhost:4000/gh-pages-template if baseurl is set)
Note:
--baseurl "" flag allows you to test without the baseurl prefix locallybundle install --path vendor/bundle to install gems locally without sudoThis template is available as open source under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
For issues or questions: