This document details how Jekyll is configured and used in the IT-Journey repository, including collections, plugins, themes, and build processes.
bamr87/zer0-mistakes (remote theme)_config.yml (Production)Main configuration file for production builds and GitHub Pages deployment.
Key Settings:
remote_theme: "bamr87/zer0-mistakes"
markdown: kramdown
permalink: pretty
collections_dir: pages
_config_dev.yml (Development)Development-specific overrides for local testing.
Usage:
bundle exec jekyll serve --config _config_dev.yml
Jekyll collections organize content into logical groups with specific purposes and URL structures.
All collections are stored in the pages/ directory (defined by collections_dir: pages).
_posts CollectionTraditional Jekyll blog posts.
posts:
output: true
permalink: /:collection/:year/:month/:day/:slug/
URL Pattern: /posts/2025/10/13/my-post-title/
Purpose: Blog articles, tutorials, journal entries, technical write-ups
Frontmatter Requirements: title, date, layout, tags (recommended)
_docs CollectionLearning resources and reference documentation.
docs:
output: true
permalink: /:collection/:categories/:name/
URL Pattern: /docs/jekyll/jekyll-config/ (if categories: jekyll)
Purpose: External tool documentation, reference guides, educational resources
Note: Distinct from developer docs in /docs/ directory
_quests CollectionGamified learning experiences with progressive difficulty.
quests:
output: true
permalink: /:collection/:categories/:name/
URL Pattern: /quests/automation/link-health-guardian/
Purpose: Hands-on projects, skill-building exercises, themed learning adventures
Special Features:
_notebooks CollectionJupyter notebooks and interactive code content.
notebooks:
output: true
permalink: /:collection/:path/:name/
URL Pattern: /notebooks/data-science/analysis-example/
Purpose: Runnable code examples, data analysis, interactive tutorials
Format Support: .ipynb, .md (converted notebooks)
_notes CollectionPersonal development notes and work-in-progress content.
notes:
output: true
permalink: /:collection/:path/:name/
URL Pattern: /notes/development/feature-idea/
Purpose: Draft content, research notes, experimental ideas
Visibility: May be excluded from main navigation
_about CollectionInformation about the IT-Journey project.
about:
output: true
permalink: /:collection/:categories/:name/
URL Pattern: /about/features/mermaid-diagrams/
Purpose: Project information, site documentation, team pages
_quickstart CollectionQuick reference guides for rapid learning.
quickstart:
output: true
permalink: /:collection/:name/
URL Pattern: /quickstart/jekyll-setup/
Purpose: Fast onboarding, cheat sheets, common task references
_hobbies CollectionPersonal hobby-related content.
hobbies:
output: true
permalink: /:collection/:categories/:name/
URL Pattern: /hobbies/woodworking/project-name/
Purpose: Non-technical personal projects
Default frontmatter values for each collection are set in _config.yml:
defaults:
# All files
- scope:
path: ""
values:
layout: root
author_profile: false
read_time: true
comments: false
share: true
related: true
# Posts-specific
- scope:
path: pages/_posts
values:
layout: journals
sidebar:
nav: dynamic
# Docs-specific
- scope:
path: pages/_docs
values:
layout: default
sidebar:
nav: docs
# Quests-specific
- scope:
path: pages/_quests
values:
layout: default
sidebar:
nav: dynamic
Plugins are defined in _config.yml and Gemfile:
plugins:
- github-pages
- jekyll-remote-theme
- jekyll-feed
- jekyll-sitemap
- jekyll-seo-tag
- jekyll-paginate
- jekyll-relative-links
github-pagesMeta-gem that includes all GitHub Pages-compatible Jekyll plugins.
jekyll-remote-themeEnables using themes hosted on GitHub without installing them locally.
bamr87/zer0-mistakesjekyll-feedGenerates an Atom feed for posts at /feed.xml.
jekyll-sitemapCreates sitemap.xml for search engines.
sitemap: false to exclude pagesjekyll-seo-tagAdds meta tags for SEO and social media sharing.
jekyll-paginateProvides pagination for posts.
paginate: 10
paginate_path: "/pages/:num/"
jekyll-relative-linksConverts relative links to proper Jekyll links.
markdown: kramdown
kramdown:
input: GFM # GitHub Flavored Markdown
header_offset: 0
toc_levels: 1..6
Features:
Handled by Rouge (included in github-pages gem):
Usage in Markdown:
```python
def hello_world():
print("Hello, IT-Journey!")
```
Repository: https://github.com/bamr87/zer0-mistakes
Theme Structure:
_layouts/_includes/_sass/assets/Local files take precedence over theme files:
Override Priority:
_layouts/javascript.html → Used_layouts/default.html → Used (if no local version)assets/css/custom.css → Appended to theme CSS_includes/ → Override or extend theme includestheme_skin: "dark" # Options: air, aqua, contrast, dark, dirt, neon, mint, plum, sunrise
theme_color:
main: #007bff
secondary: #6c757d
# ... additional color definitions
root - Base HTML structuredefault - Standard page layoutjournals - Blog post layout with metadatacollection - Collection index pagesjavascript.html - JavaScript-heavy interactive pagesroot.html (theme)
└── default.html (theme)
├── journals.html (theme)
├── collection.html (theme)
└── javascript.html (local)
Specified in frontmatter:
---
layout: journals
---
Or via collection defaults in _config.yml.
Provided by zer0-mistakes theme (partial list):
Located in _includes/:
content_statistics/ - Content metrics displays
minimal.htmlsimple_fixed.htmlstatic_test.htmltest.htmlultra_simple.htmlcontent_stats_direct.html - Direct statisticsIn layouts or content:
<!-- Direct Content Statistics Template -->
<div class="content-stats">
<h3>Content Overview</h3>
<p><strong>Total Posts:</strong> 70+ articles covering technical topics</p>
<p><strong>Categories:</strong> 10+ major domains including DevOps, Security, Programming</p>
<p><strong>Active Learning:</strong> Continuously updated with new content</p>
</div>
Located in _data/, accessible via site.data:
_data/navigation/main.yml:
- title: "About"
url: /about/
- title: "Quests"
url: /quests/
- title: "Docs"
url: /docs/
Access in templates:
<a href="/quickstart">Quick-Start</a>
<a href="/posts">Journey</a>
<a href="/docs/">Library</a>
<a href="/notes">Notebook</a>
<a href="/about/">About</a>
ui-text.yml - Interface text and translationsprerequisites.yml - Learning prerequisitesstatistics_config.yml - Content statistics configurationJekyll compiles SCSS to CSS automatically:
Source: assets/css/main.scss
---
# Front matter required for Jekyll processing
---
@import "custom";
@import "theme-variables";
// ... additional imports
Output: _site/assets/css/main.css
_sass/ are imported_site/assets/Located in assets/css/custom.css for direct CSS or _sass/custom.scss for SCSS.
# Standard build
bundle exec jekyll build
# Development server with auto-reload
bundle exec jekyll serve --config _config_dev.yml --livereload
# Production build
JEKYLL_ENV=production bundle exec jekyll build
Automatic on push to main branch:
github-pages gem# Start development server
docker-compose up
# Build only
docker-compose run jekyll bundle exec jekyll build
JEKYLL_ENVControls build environment:
development (default) - Development modeproduction - Production optimizationsUsage:
<!-- Production-only code -->
Defined in _config.yml and accessible via site.*:
url: 'https://it-journey.dev'
baseurl: ""
port: 4002
Enabled via frontmatter:
---
mermaid: true
---
Then use in content:
<div class="mermaid">
graph TD;
A-->B;
A-->C;
</div>
Enabled via frontmatter:
---
mathjax: true
---
Then use LaTeX syntax:
$a^2 + b^2 = c^2$
$$\begin{equation}
E = mc^2
\end{equation}$$
GitHub Discussions-based comments:
gisgus:
enabled: true
data-repo-id: "MDEwOlJlcG9zaXRvcnkyODM4MjI1NzM"
data-category-id: "DIC_kwDOEOrJ7c4CAn8D"
bundle exec jekyll serve --incremental
Only rebuilds changed files (experimental).
In _config.yml:
exclude:
- .sass-cache/
- .jekyll-cache/
- node_modules/
- vendor/
- Gemfile.lock
Jekyll caches:
.jekyll-cache/).sass-cache/)Delete cache directories to force full rebuild.
Issue: Bundle install fails
# Solution: Update bundler
gem update bundler
bundle install
Issue: Port already in use
# Solution: Use different port
bundle exec jekyll serve --port 4003
Issue: Theme not loading
# Solution: Clear cache and rebuild
rm -rf .jekyll-cache _site
bundle exec jekyll serve
# Verbose output
bundle exec jekyll serve --verbose
# Show configuration
bundle exec jekyll serve --config _config_dev.yml --verbose
_config.yml_config_dev.yml before deployingLast Updated: 2025-10-13
Version: 1.0.0