Theme docs
Documentation
Every guide, and the fifteen-minute setup.
The guides are grouped the way the work actually runs — read them in order the first time, then use the left rail to jump.
1 · Start here
| Step | Guide | You will have |
|---|---|---|
| 1.1 | Installing | The site running at localhost:4000 |
| 1.2 | Deploying | The site live on GitHub Pages, custom domain optional |
2 · Build your site
| Step | Guide | You will have |
|---|---|---|
| 2.1 | Configuring | Your name, colours, navigation and socials in place |
| 2.2 | Content | Posts, projects, courses — and the homepage made yours |
| 2.3 | Components | Callouts, tabs, steps and stats inside your Markdown |
3 · Make it yours
| Step | Guide | You will have |
|---|---|---|
| 3.1 | Customising | Your brand on every component, via tokens |
4 · Ship it
| Step | Guide | You will have |
|---|---|---|
| 4.1 | Integrations | Analytics, comments, newsletter, ads — only what you switch on |
| 4.2 | SEO | Structured data and one canonical domain |
| 4.3 | PWA | Offline support, if and when you want it |
Help
FAQ — the questions that come up, answered plainly.
The fifteen-minute version
bundle install && bundle exec jekyll serve- Edit
_config.yml— title, url, author, navigation, social - Edit
_data/resume.ymland_data/certifications.yml - Delete the demo content:
rm _posts/*.md _projects/*.md _snippets/*.md _talks/*.md - Replace
assets/img/avatar.svgwith a real photograph - Set
CNAMEto your domain - Push, and set Settings → Pages → Source → GitHub Actions
How it fits together
_config.yml the control centre — colours, nav, collections, integrations
├── theme_style compiled into the stylesheet at build time
├── collections each declares its own hero, card style and schema.org type
└── integrations everything off until configured
_data/
├── resume.yml the whole /resume/ page
└── certifications.yml the seal wall, the sidebar widget, and hasCredential
_layouts/ default → home · page · post · resume · archive
_includes/
├── components/ the Markdown shortcodes
├── integrations/ analytics, comments, push — each behind its own guard
└── icons.svg the sprite, inlined once per page
_sass/trailblazer/ abstracts → tokens → base → layout → components → utilities
_sass/trailblazer-overrides.scss ships empty; imported last; yours
assets/
├── css/main.scss reads _config.yml through Liquid, then imports the framework
└── js/theme.js one deferred file; everything in it is an enhancement
The single idea worth internalising: components read semantic tokens, never
raw values. That is what makes one line in _config.yml re-theme the site,
and it is the convention to keep if you extend it.
Found something wrong on this page? The source lives in
docs/ — corrections welcome, see the
contribution guide.