Alembic
⚗ A Jekyll boilerplate theme designed to be a starting point for any Jekyll website.
Contents
- About
- Features
- Examples
- Installation
- Configuration
- Using includes
- Page layouts
- Page and Post options
- Credits
About
Alembic is a starting point for Jekyll projects. Rather than starting from scratch, this boilerplate is designed to get the ball rolling immediately. Install it, configure it, tweak it, push it.
Features
- Available as a starter kit or as Jekyll theme gem
- Simple and elegant design that can be used out of the box or as solid starting point
- Tested in all major browsers, including IE and Edge
- Configurable colours and typography in a single settings file
- Extensive set of shortcodes to include various elements; such as buttons, icons, figure images and more
- Solid typographic framework from Sassline
- Configurable navigation via a single file
- Modular Jekyll components
- Post category support in the form of a single post index page grouped by category
- Built in live search using JavaScript
- Contact form built in using Formspree
- Works on GitHub Pages out of the box
- Designed with Siteleaf in mind
- Has 9 of the most popular networks as performant sharing buttons
- Has documentation
Examples
Here are a few examples of Alembic out in the wild being used in a variety of ways:
- bitpodcast.com
- joelcagedesign.com
- bawejakunal.github.io
- case2111.github.io
- www.10people.co.uk
- hrkeni.me
- venuthatikonda.github.io
- ccs17.bsc.es
- karateca.org
Installation
As a Boilerplate / Fork
- Fork the repo
- Clone down the repo with
$ git clone git@github.com:username/reponame.git
- Delete the following unnecessary files/folders:
demo/
,CODE_OF_CONDUCT.md
,CONTRIBUTING.md
,LICENSE
,screenshot.png
andalembic-jekyll-theme.gemspec
- Change the
logo.svg
anddefault-social-image.png
in theassets/
folder to your own branding - Configure your site settings using the
_config.yml
, more info can be found in Configuration - Change the
CNAME
record to your projects' record - Install bundler with
$ gem install bundler
- Install gems with
$ bundle install
- Run Jekyll with
$ bundle exec jekyll serve --watch
- Begin hacking for your project
As a Jekyll 3.3 theme gem
- Download the starter
/demo
content, quick download link - Configure your site settings using the
_config.yml
, more info can be found in Configuration - Create a
logo.svg
anddefault-social-image.png
in a newassets/
folder - Install bundler with
$ gem install bundler
- Install gems with
$ bundle install
- Run Jekyll with
$ bundle exec jekyll serve --watch
- Begin hacking for your project
Boilerplate & Theme differences
The boilerplate kit is better for more drastic hacking and changes, a project that's quite different to any other and needs a lot of custom work done. Additionally you'll only be able to use this method if you want to host it on GitHub Pages, as themes can't be submitted... yet.
Using the theme will allow you to receive updates made and will be more programmatic. To make your own changes you'll need to overwrite the files with your own. For example: If I want to change the colours and typography of my site I'll need to copy the _settings.scss
file and create my own in _sass/_settings.scss
with my own changes. This is the same for all files within the theme, which means your own project will be more lean than if you were to use the boilerplate.
Configuration
There's a number of settings you'll need to change before you can start hacking away at files. Here's a run down of what you'll need to change:
Gem dependency settings
twitter
, author
and social
values will need to be changed to the projects' social information or removed. Look for the Gem settings
comment within the /_config.yml
file. These values are for the jekyll-seo-tag - follow the link to find out more.
Site settings
You'll need to change the description
, title
and url
to match with the project. You'll also need to replace the /assets/logo.svg
and /assets/default-social-image.png
with the project logo and default social image. Setting the site language can be done with lang
, the theme will default to en-US
. The email
needs to be changed to the email you want to receive contact form enquires with. The disqus
value can be changed to your project username on Disqus, remove this from the /_config.yml
file if you don't want comments enabled. Look for the Site settings
comment within the /_config.yml
file. The repo
setting is optional, for now, and can be removed entirely, if you wish.
Site navigation
There are a total of 4 different navigation types:
navigation_header
: The links shown in the header (it is also used on the 404 page)navigation_footer
: The links shown in the footersocial_links
: The social icon links that are shown in the sidebarsharing_links
: The social sharing buttons that are shown at the bottom of blog posts
All navigations can be edited using the _config.yml
file. To see example usage either look for the Site navigation
comment within the /_config.yml
file or see the nav-share.html include.
If there are no items for the navigation_header
or navigation_footer
, they will fallback to a list of pages within the site. The social_navigation
properties should either be one that is already in the list (so Twitter
or Facebook
) or simply link
, this is so an icon can be set for the link.
Using includes
There are 2 main types of includes: ones designed for the site and ones that are designed as shortcodes. Here are a list of the shortcode includes:
button.html
A button that can link to a page of any kind.
Example usage: {% include button.html text="I'm a button" link="https://david.darn.es" %}
Available options:
text
: The text of the button requiredlink
: The link that the button goes to requiredicon
: The icon that is added to the end of the button textcolor
: The color of the button
figure.html
An image with optional caption.
Example usage: {% include figure.html image="/uploads/feature-image.jpg" caption="Check out my photo" %}
Available options:
image
: The image shown requiredcaption
: A caption to explain the imageposition
: The position of the image,left
orright
icon.html
An icon.
Example usage: {% include icon.html id="twitter" %}
Available options:
id
: The reference for the icon requiredtitle
: The accessible label for the iconcolor
: The desired colour of the icon
nav-share.html
A set of buttons that share the current page to various social networks, which is controlled within the _config.yml
file under the sharing_links
keyword.
Example usage: {% include nav-share.html %}
Available options:
Twitter: "#1DA1F2"
facebook: "#3B5998"
Google+: "#DC4E41"
Pinterest: "#BD081C"
LinkedIn: "#0077B5"
tumblr: "#36465D"
Reddit: "#FF4500"
Hacker News: "#ff6600"
Designer News: "#2D72D9"
Email: ""
The first item is the name of the network (must be one of the ones stated above) and the second is the colour of the button. To remove a button just remove the line of the same name.
video.html
A YouTube video.
Example usage: {% include video.html id="zrkcGL5H3MU" %}
Available options:
id
: The YouTube ID for the video required
map.html
A Google map. See Google My Maps
Example usage: {% include map.html id="1UT-2Z-Vg_MG_TrS5X2p8SthsJhc" %}
Available options:
id
: The map ID for the video required
site-form.html
Adds a contact form to the page.
Example usage: {% include site-form.html %}
This include has no options. Use the email
option in the /_config.yml
to change to the desired email.
site-search.html
Adds a search form to the page.
Example usage: {% include site-search.html %}
This include has no options. This include will add a block of javascript to the page and javascript reference in order for the search field to work correctly.
Page layouts
As well as page
, post
, blog
, there are a few alternative layouts that can be used on pages:
categories
: Shows all posts grouped by category, with an index of categories in a left hand sidebarsearch
: Adds a search field to the page as well as a simplified version of the sidebar to allow more focus on the search results
Page and Post options
There are some more specific options you can apply when creating a page or a post:
aside: true
: Adds a sidebar to the page or post, this is false by default and will not appearcomments: false
: Turns off comments for that postfeature_image: "/uploads/feature-image.jpg"
: Adds a full width feature image at the top of the pagefeature_text: "Example text"
: Adds text to the top of the page as a full width feature with solid colour; supports markdown. This can be used in conjunction with thefeature_image
option to create a feature image with text over itindexing: false
: Adds anoindex
meta element to the<head>
to stop crawler bots from indexing the page, used on the 404 page
Note: The Post List Page options are actually in the collection data within the
_config.yml
file.
Credits
- Thanks to Simple Icons for providing the brand icons, by Dan Leech
- Thanks to Sassline for the typographic basis, by Jake Giltsoff
- Thanks to Flexbox mixin by Brian Franco
- Thanks to Normalize by Nicolas Gallagher and Jonathan Neal.
- Thanks to pygments-css for the autumn syntax highlighting, by Rich Leland