jekyll-timeline

A Jekyll plugin providing {% timeline %} and {% timeline_event %} block tags that render a vertical timeline component. Pure HTML+CSS output — no JavaScript, no external dependencies.

Gem Version

Installation

Add to your Gemfile:

gem "jekyll-timeline"

Add to _config.yml:

plugins:
  - jekyll-timeline

Run bundle install.

Copy _timeline.scss from the gem into your site's SCSS directory and import it:

@import "timeline";

Usage

Wrap events in a {% timeline %} block. Each {% timeline_event %} block is one entry.

{% timeline %}

{% timeline_event date="January 2024" title="Project launched" icon="fa-rocket" %}
We shipped the first public release after six months of development.
{% endtimeline_event %}

{% timeline_event date="March 2024" title="1,000 users" icon="fa-users" color="#2ecc71" %}
Crossed 1,000 active users. Added team management features.
{% endtimeline_event %}

{% timeline_event date="June 2024" title="v2.0 released" icon="fa-bolt" %}
Complete rewrite with improved performance and a new API.
{% endtimeline_event %}

{% endtimeline %}

Reverse order

{% timeline order="desc" %}
...
{% endtimeline %}

Event attributes

Attribute Required Description
date No Display date string (any format — it's not parsed)
title No Event headline
icon No Icon class(es), emoji, or plain text. Omit for dot fallback.
color No CSS color value for this event's icon background

Icon formats

Font Awesome classes — pass one or two CSS classes:

{% timeline_event icon="fa-rocket" %}          <!-- uses default_icon_prefix -->
{% timeline_event icon="fa-solid fa-rocket" %} <!-- explicit style -->
{% timeline_event icon="fa-brands fa-github" %}
{% timeline_event icon="fa-duotone fa-star" %} <!-- FA Pro -->

Emoji:

{% timeline_event icon="🚀" %}

No icon — omit the attribute entirely for a neutral dot:

{% timeline_event date="2024" title="Something happened" %}

Configuration

All options are optional:

timeline:
  default_icon_prefix: "fa-solid"  # prepended when icon has no spaces (default: fa-solid)

Styling

Copy _timeline.scss into your site and customize via CSS custom properties:

:root {
  --timeline-line-color: #dee2e6;     /* vertical line color */
  --timeline-icon-bg: #6c757d;        /* default icon circle background */
  --timeline-icon-color: #fff;        /* icon/emoji color */
  --timeline-date-color: #6c757d;     /* date label color */
  --timeline-title-color: inherit;    /* event title color */
  --timeline-body-color: inherit;     /* body text color */
}

Per-event color override via the color= attribute sets --timeline-event-color inline on that event, overriding --timeline-icon-bg for that circle only.

GitHub Pages compatibility

Compatible with GitHub Pages when built via a custom GitHub Actions workflow. Not compatible with the default GitHub Pages safe-mode build.

License

MIT