├── .github
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── config.yml
│ ├── feature-request.md
│ └── help-request.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── 404.md
├── CNAME
├── Gemfile
├── LICENSE
├── README.md
├── _config.yml
├── _includes
├── button.html
├── figure.html
├── icon.html
├── map.html
├── nav-categories.html
├── nav-default.html
├── nav-footer.html
├── nav-header.html
├── nav-share.html
├── nav-social.html
├── post-categories.html
├── post-comments.html
├── post-list.html
├── post-meta.html
├── post-pagination.html
├── post-related.html
├── site-analytics.html
├── site-aside.html
├── site-before-end.html
├── site-before-start.html
├── site-favicons.html
├── site-feature.html
├── site-fonts.html
├── site-footer.html
├── site-form.html
├── site-header.html
├── site-icons.svg
├── site-logo.html
├── site-search.html
├── site-styles.html
├── site-sw.html
└── video.html
├── _layouts
├── blog.html
├── categories.html
├── default.html
├── page.html
└── post.html
├── _posts
├── 2016-08-27-example-post-one.md
├── 2016-08-28-example-post-two.md
└── 2016-08-29-example-post-three.md
├── _sass
├── _flex.scss
├── _normalize.scss
├── _sassline-base.scss
├── _settings.scss
├── _syntax.scss
├── _theme.scss
├── alembic.scss
└── sassline-base
│ ├── _mixins.scss
│ ├── _modular-scale.scss
│ ├── _reset.scss
│ ├── _typography.scss
│ └── _variables.scss
├── alembic-jekyll-theme.gemspec
├── assets
├── .gitignore
├── default-offline-image.png
├── default-social-image.png
├── logos
│ ├── logo.svg
│ ├── logo@1024px.png
│ ├── logo@120px.png
│ ├── logo@144px.png
│ ├── logo@16px.png
│ ├── logo@180px.png
│ ├── logo@32px.png
│ ├── logo@512px.png
│ └── logo@96px.png
├── manifest.json
├── scripts
│ ├── fetch.js
│ └── sw.js
├── search.json
└── styles.scss
├── blog
└── index.html
├── categories.md
├── elements.md
├── index.md
├── offline.md
├── screenshot.png
├── search.md
└── thanks.md
/.github/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | ## When Something Happens
4 |
5 | If you see a Code of Conduct violation, follow these steps:
6 |
7 | 1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s) or commits.
8 | 2. That person should immediately stop the behaviour and correct the issue.
9 | 3. If this doesn’t happen, or if you're uncomfortable speaking up, [contact the maintainers](#contacting-maintainers).
10 | 4. As soon as available, a maintainer will look into the issue, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary block, then long-term repo or organisation ban.
11 |
12 | When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation.
13 |
14 | **The maintainer team will prioritise the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples).
15 |
16 | ## Our Pledge
17 |
18 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers of this project pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation.
19 |
20 | ## Our Standards
21 |
22 | Examples of behaviour that contributes to creating a positive environment include:
23 |
24 | * Using welcoming and inclusive language.
25 | * Being respectful of differing viewpoints and experiences.
26 | * Gracefully accepting constructive feedback.
27 | * Focusing on what is best for the community.
28 | * Showing empathy and kindness towards other community members.
29 | * Encouraging and raising up your peers in the project so you can all bask in hacks and glory.
30 |
31 | Examples of unacceptable behaviour by participants include:
32 |
33 | * The use of sexualised language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity.
34 | * Trolling, insulting/derogatory comments, and personal or political attacks.
35 | * Public or private harassment, deliberate intimidation, or threats.
36 | * Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent.
37 | * Publishing private screenshots or quotes of interactions in the context of this project without all quoted users' *explicit* consent.
38 | * Publishing of private communication that doesn't have to do with reporting harassment.
39 | * Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism).
40 | * Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia".
41 | * Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are.
42 | * [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something.
43 | * "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)"
44 | * Other conduct which could reasonably be considered inappropriate in a professional or community setting.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within spaces involving this project and in other spaces involving community members. This includes the repository, its Pull Requests and Issue tracker, its Twitter community, private email communications in the context of the project, and any events where members of the project are participating, as well as adjacent communities and venues affecting the project's members.
49 |
50 | Depending on the violation, the maintainers may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members.
51 |
52 | ### Other Community Standards
53 |
54 | As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/).
55 |
56 | Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct).
57 |
58 | Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities.
59 |
60 | ## Maintainer Enforcement Process
61 |
62 | Once the maintainers get involved, they will follow a documented series of steps and do their best to preserve the well-being of project members. This section covers actual concrete steps.
63 |
64 | ### Contacting Maintainers
65 |
66 | You may get in touch with the maintainer team through any of the following methods:
67 |
68 | * Through email:
69 | * [me@daviddarnes.com](mailto:me@daviddarnes.com) (David Darnes)
70 |
71 | * Through Twitter:
72 | * [@DavidDarnes](https://twitter.com/DavidDarnes) (David Darnes)
73 |
74 | ### Further Enforcement
75 |
76 | If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed:
77 |
78 | 1. Repeat the request to stop.
79 | 2. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked.
80 | 3. If the behaviour continues or is repeated later, the person will be blocked from participating for 24 hours.
81 | 4. If the behaviour continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used.
82 |
83 | On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary.
84 |
85 | Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behaviour that would be completely unacceptable in any social setting that puts our members at risk.
86 |
87 | Members expelled from events or venues with any sort of paid attendance will not be refunded.
88 |
89 | ### Who Watches the Watchers?
90 |
91 | Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community.
92 |
93 | Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures.
94 |
95 | ### Enforcement Examples
96 |
97 | #### The Best Case
98 |
99 | The vast majority of situations work out like this. This interaction is common, and generally positive.
100 |
101 | > Alex: "Yeah I used X and it was really crazy!"
102 |
103 | > Patt (not a maintainer): "Hey, could you not use that word? What about 'ridiculous' instead?"
104 |
105 | > Alex: "oh sorry, sure." -> edits old comment to say "it was really confusing!"
106 |
107 | #### The Maintainer Case
108 |
109 | Sometimes, though, you need to get maintainers involved. Maintainers will do their best to resolve conflicts, but people who were harmed by something **will take priority**.
110 |
111 | > Patt: "Honestly, sometimes I just really hate using $library and anyone who uses it probably sucks at their job."
112 |
113 | > Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that."
114 |
115 | > Patt: "I'm not attacking anyone, what's your problem?"
116 |
117 | > Alex: "@maintainers hey uh. Can someone look at this issue? Patt is getting a bit aggro. I tried to nudge them about it, but nope."
118 |
119 | > KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you tone it down? This sort of attack is really not okay in this space."
120 |
121 | > Patt: "Leave me alone I haven't said anything bad wtf is wrong with you."
122 |
123 | > KeeperOfCommitBits: (deletes user's comment), "@patt I mean it. Please refer to the CoC over at (URL to this CoC) if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in this thread, since they made folks there uncomfortable. Let's try and be kind, yeah?"
124 |
125 | > Patt: "@keeperofbits Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologising and edit my messages. Sorry for the trouble."
126 |
127 | > KeeperOfCommitBits: "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!"
128 |
129 | #### The Nope Case
130 |
131 | > PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable."
132 |
133 | > Patt: "NOOOOPE. OH NOPE NOPE."
134 |
135 | > Alex: "JFC NO. NOPE. @keeperofbits NOPE NOPE LOOK HERE"
136 |
137 | > KeeperOfCommitBits: "👀 Nope. NOPE NOPE NOPE. 🔥"
138 |
139 | > PepeTheFrog🐸 has been banned from all organisation or user repositories belonging to KeeperOfCommitBits.
140 |
141 | ## Attribution
142 |
143 | This Code of Conduct was generated using [WeAllJS Code of Conduct Generator](https://npm.im/weallbehave), which is based on the [WeAllJS Code of
144 | Conduct](https://wealljs.org/code-of-conduct), which is itself based on
145 | [Contributor Covenant](http://contributor-covenant.org), version 1.4, available
146 | at
147 | [http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4),
148 | and the LGBTQ in Technology Slack [Code of
149 | Conduct](http://lgbtq.technology/coc.html).
150 |
--------------------------------------------------------------------------------
/.github/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | Thank you so much for your interest in contributing! All types of contributions are encouraged and valued. See below for different ways to help, and details about how this project handles them!
4 |
5 | Please make sure to read the relevant section before making your contribution! It will make it a lot easier for us maintainers to make the most of it and smooth out the experience for all involved. 💚
6 |
7 | The [Project Team](#join-the-project-team) looks forward to your contributions.~
8 |
9 | ## How do I...
10 |
11 | * Ask or Say Something 🤔🐛😱
12 | * [Request Support](#request-support)
13 | * [Report an Error or Bug](#report-an-error-or-bug)
14 | * [Request a Feature](#request-a-feature)
15 | * Make Something 🤓👩🏽💻📜🍳
16 | * [Project Setup](#project-setup)
17 | * [Contribute Documentation](#contribute-documentation)
18 | * [Contribute Code](#contribute-code)
19 | * Manage Something ✅🙆🏼💃👔
20 | * [Provide Support on Issues](#provide-support-on-issues)
21 | * [Label Issues](#label-issues)
22 | * [Clean Up Issues and PRs](#clean-up-issues-and-prs)
23 | * [Review Pull Requests](#review-pull-requests)
24 | * [Merge Pull Requests](#merge-pull-requests)
25 | * [Tag a Release](#tag-a-release)
26 | * [Join the Project Team](#join-the-project-team)
27 | * [Add a Guide Like This One To My Project](#attribution) 🤖😻👻
28 |
29 | ## Request Support
30 |
31 | If you have a question about this project, how to use it, or just need clarification about something:
32 |
33 | * Open an Issue at https://github.com/daviddarnes/alembic/issues
34 | * Provide as much context as you can about what you're running into.
35 | * Provide project and platform versions (jekyll, ruby, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it.
36 |
37 | Once it's filed:
38 |
39 | * The project team will [label the issue](#label-issues).
40 | * Someone will try to have a response soon.
41 | * If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made.
42 |
43 | ## Report an Error or Bug
44 |
45 | If you run into an error or bug with the project:
46 |
47 | * Open an Issue at https://github.com/daviddarnes/alembic/issues
48 | * Include *reproduction steps* that someone else can follow to recreate the bug or error on their own.
49 | * Provide project and platform versions (jekyll, ruby, etc), depending on what seems relevant. If not, please be ready to provide that information if maintainers ask for it.
50 |
51 | Once it's filed:
52 |
53 | * The project team will [label the issue](#label-issues).
54 | * A team member will try to reproduce the issue with your provided steps. If there are no repro steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced.
55 | * If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#contribute-code).
56 | * If you or the maintainers don't respond to an issue for 30 days, the [issue will be closed](#clean-up-issues-and-prs). If you want to come back to it, reply (once, please), and we'll reopen the existing issue. Please avoid filing new issues as extensions of one you already made.
57 | * `critical` issues may be left open, depending on perceived immediacy and severity, even past the 30 day deadline.
58 |
59 | ## Request a Feature
60 |
61 | If the project doesn't do something you need or want it to do:
62 |
63 | * Open an Issue at https://github.com/daviddarnes/alembic/issues
64 | * Provide as much context as you can about what you're running into.
65 | * Please try and be clear about why existing features and alternatives would not work for you.
66 |
67 | Once it's filed:
68 |
69 | * The project team will [label the issue](#label-issues).
70 | * The project team will evaluate the feature request, possibly asking you more questions to understand its purpose and any relevant requirements. If the issue is closed, the team will convey their reasoning and suggest an alternative path forward.
71 | * If the feature request is accepted, it will be marked for implementation with `feature-accepted`, which can then be done by either by a core team member or by anyone in the community who wants to [contribute code](#contribute-code).
72 |
73 | Note: The team is unlikely to be able to accept every single feature request that is filed. Please understand if they need to say no.
74 |
75 | ## Project Setup
76 |
77 | So you wanna contribute some code! That's great! This project uses GitHub Pull Requests to manage contributions, so [read up on how to fork a GitHub project and file a PR](https://guides.github.com/activities/forking) if you've never done it before.
78 |
79 | If this seems like a lot or you aren't able to do all this setup, you might also be able to [edit the files directly](https://help.github.com/articles/editing-files-in-another-user-s-repository/) without having to do any of this setup. Yes, [even code](#contribute-code).
80 |
81 | If you want to go the usual route and run the project locally, though:
82 |
83 | * [Install bundler](hhttp://bundler.io/#getting-started)
84 | * [Fork the project](https://guides.github.com/activities/forking/#fork)
85 |
86 | Then in your terminal:
87 | * `$ bundle install`
88 | * `$ bundle exec jekyll serve --watch`
89 |
90 | And you should be ready to go!
91 |
92 | ## Contribute Documentation
93 |
94 | Documentation is a super important, critical part of this project. Docs are how we keep track of what we're doing, how, and why. It's how we stay on the same page about our policies. And it's how we tell others everything they need in order to be able to use this project -- or contribute to it. So thank you in advance.
95 |
96 | Documentation contributions of any size are welcome! Feel free to file a PR even if you're just rewording a sentence to be more clear, or fixing a spelling mistake!
97 |
98 | To contribute documentation:
99 |
100 | * [Set up the project](#project-setup).
101 | * Edit or add any relevant documentation.
102 | * Make sure your changes are formatted correctly and consistently with the rest of the documentation.
103 | * Re-read what you wrote, and run a spellchecker on it to make sure you didn't miss anything.
104 | * In your commit message(s), begin the first line with `docs: `. For example: `docs: Adding a doc contrib section to CONTRIBUTING.md`.
105 | * Write clear, concise commit message(s) using [conventional-changelog format](https://github.com/conventional-changelog/conventional-changelog-angular/blob/master/convention.md). Documentation commits should use `docs(](https://buymeacoffee.com/daviddarnes#support)
9 |
10 | ## Contents
11 | - [About](#about)
12 | - [Features](#features)
13 | - [Examples](#examples)
14 | - [Installation](#installation)
15 | - [Customising](#customising)
16 | - [Configuration](#configuration)
17 | - [Gem dependency settings](#gem-dependency-settings)
18 | - [Site settings](#site-settings)
19 | - [Site performance settings](#site-performance-settings)
20 | - [Site navigation](#site-navigation)
21 | - [Custom fonts](#custom-fonts)
22 | - [Using includes](#using-includes)
23 | - [Page layouts](#page-layouts)
24 | - [Page and Post options](#page-and-post-options)
25 | - [Credits](#credits)
26 |
27 | ## About
28 |
29 | **Alembic is a starting point for [Jekyll](https://jekyllrb.com/) projects. Rather than starting from scratch, this boilerplate theme is designed to get rolling immediately. Install it, configure it, tweak it, push it.**
30 |
31 | ## Features
32 |
33 | - Available as a **theme gem** and **GitHub Pages** theme
34 | - Clear and elegant design that can be used out of the box or as solid starting point
35 | - Tested in all major browsers, including **IE and Edge**
36 | - Built in **Service Worker** so it can work offline and on slow connections
37 | - **Configurable colours** and typography in a single settings file
38 | - Extensive set of **shortcodes** to include various elements; such as buttons, icons, figure images and more
39 | - Solid **typographic framework** from [Sassline](https://sassline.com/)
40 | - Configurable navigation via a single file
41 | - Modular Jekyll components
42 | - Post category support in the form of a single post index page grouped by category
43 | - Built in live search using JavaScript
44 | - **Contact form** built in using [Formspree](https://formspree.io/) or [Netlify Forms](https://www.netlify.com/features/#forms)
45 | - Designed with **[Siteleaf](http://www.siteleaf.com/)** in mind
46 | - Has 9 of the most popular networks as performant sharing buttons
47 | - Has documentation
48 |
49 | ## Examples
50 |
51 | Here are a few examples of Alembic out in the wild being used in a variety of ways:
52 |
53 | - [billmei.net](https://billmei.net/)
54 | - [bawejakunal.github.io](https://bawejakunal.github.io/)
55 | - [case2111.github.io](https://case2111.github.io/)
56 | - [karateca.org](https://www.karateca.org/)
57 |
58 | ## Installation
59 |
60 | ### Quick setup
61 |
62 | To give you a running start I've put together some starter kits that you can download, fork or even deploy immediately:
63 |
64 | - Vanilla Jekyll starter kit:
65 | [](https://app.netlify.com/start/deploy?repository=https://github.com/daviddarnes/alembic-kit)
66 | - Forestry starter kit:
67 | [](https://app.forestry.io/quick-start?repo=daviddarnes/alembic-forestry-kit&engine=jekyll)
68 | [](https://app.netlify.com/start/deploy?repository=https://github.com/daviddarnes/alembic-forestry-kit)
69 | - Netlify CMS starter kit:
70 | [](https://app.netlify.com/start/deploy?repository=https://github.com/daviddarnes/alembic-netlifycms-kit&stack=cms)
71 |
72 | - GitHub Pages with remote theme kit - **[Download kit](https://github.com/daviddarnes/alembic-kit/archive/remote-theme.zip)**
73 | - Stackbit starter kit:
74 | [](https://app.stackbit.com/create?theme=https://github.com/daviddarnes/alembic-stackbit-kit)
75 |
76 | ### As a Jekyll theme
77 |
78 | 1. Add `gem "alembic-jekyll-theme"` to your `Gemfile` to add the theme as a dependancy
79 | 2. Run the command `bundle install` in the root of project to install the theme and its dependancies
80 | 3. Add `theme: alembic-jekyll-theme` to your `_config.yml` file to set the site theme
81 | 4. Run `bundle exec jekyll serve` to build and serve your site
82 | 5. Done! Use the [configuration](#configuration) documentation and the example [`_config.yml`](https://github.com/daviddarnes/alembic/blob/master/_config.yml) file to set things like the navigation, contact form and social sharing buttons
83 |
84 | ### As a GitHub Pages remote theme
85 |
86 | 1. Add `gem "jekyll-remote-theme"` to your `Gemfile` to add the theme as a dependancy
87 | 2. Run the command `bundle install` in the root of project to install the jekyll remote theme gem as a dependancy
88 | 3. Add `jekyll-remote-theme` to the list of `plugins` in your `_config.yml` file
89 | 4. Add `remote_theme: daviddarnes/alembic@main` to your `_config.yml` file to set the site theme
90 | 5. Run `bundle exec jekyll serve` to build and serve your site
91 | 6. Done! Use the [configuration](#configuration) documentation and the example [`_config.yml`](https://github.com/daviddarnes/alembic/blob/master/_config.yml) file to set things like the navigation, contact form and social sharing buttons
92 |
93 | ### As a Boilerplate / Fork
94 |
95 | _(deprecated, not recommended)_
96 |
97 | 1. [Fork the repo](https://github.com/daviddarnes/alembic#fork-destination-box)
98 | 2. Replace the `Gemfile` with one stating all the gems used in your project
99 | 3. Delete the following unnecessary files/folders: `.github`, `LICENSE`, `screenshot.png`, `CNAME` and `alembic-jekyll-theme.gemspec`
100 | 4. Run the command `bundle install` in the root of project to install the jekyll remote theme gem as a dependancy
101 | 5. Run `bundle exec jekyll serve` to build and serve your site
102 | 6. Done! Use the [configuration](#configuration) documentation and the example [`_config.yml`](https://github.com/daviddarnes/alembic/blob/master/_config.yml) file to set things like the navigation, contact form and social sharing buttons
103 |
104 | ## Customising
105 |
106 | When using Alembic as a theme means you can take advantage of the file overriding method. This allows you to overwrite any file in this theme with your own custom file, by matching the file name and path. The most common example of this would be if you want to add your own styles or change the core style settings.
107 |
108 | To add your own styles copy the [`styles.scss`](https://github.com/daviddarnes/alembic/blob/master/assets/styles.scss) into your own project with the same file path (`assets/styles.scss`). From there you can add your own styles, you can even optionally ignore the theme styles by removing the `@import "alembic";` line.
109 |
110 | If you're looking to set your own colours and fonts you can overwrite them by matching the variable names from the [`_settings.scss`](https://github.com/daviddarnes/alembic/blob/master/_sass/_settings.scss) file in your own `styles.scss`, make sure to state them before the `@import "alembic";` line so they take effect. The settings are a mixture of custom variables and settings from [Sassline](https://medium.com/@jakegiltsoff/sassline-v2-0-e424b2881e7e) - follow the link to find out how to configure the typographic settings.
111 |
112 | ## Configuration
113 |
114 | There are a number of optional settings for you to configure. Use the example [`_config.yml`](https://github.com/daviddarnes/alembic/blob/master/_config.yml) file in the repo and use the documentation below to configure your site:
115 |
116 | ### Gem dependency settings
117 |
118 | `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](https://github.com/jekyll/jekyll-seo-tag) - follow the link to find out more.
119 |
120 | ### Site settings
121 |
122 | You'll need to change the `description`, `title` and `url` to match with the project. You'll also need to replace the logos, default social and default offline images in the `/assets/` directory with your own graphics. 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](https://disqus.com), 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.
123 |
124 | Google Analytics can be enabled via the site configuration too. Add your tracking ID to the `/_config.yml` file in the following method: `google_analytics: 'UA-XXXXXXXX-1'`. By default all IPs of site visitors are anonymous to maintain a level of privacy for the audience. If you wish to turn this off set the `google_analytics_anonymize_ip` key to `false`.
125 |
126 | Date format can be customised in the `/_config.yml` with the option `date_format` (please refer to Liquid date filters documentation for learning about formatting possibilities). Only placeholder formatting is supported, do not try to use ordinal dates introduced in Jekyll 3.8.
127 |
128 | The `short_name` option within `/_config.yml` is to add a custom name to the site's web application counterpart. When the website is added to a device this name will appear alonside the app icon. The short name will default to the site title if this isn't set.
129 |
130 | ### Site performance settings
131 |
132 | Alembic comes with a couple of options to enhance the speed and overall performance of the site you build upon it.
133 |
134 | By default the built in Service Worker is enabled, and will work on a 'network first' method. Meaning if there's no internet connection the content the Service Worker has cached will be used until the connection comes back. It will always look for a live version of the code first. To disable the Service Worker add an option called `service_worker` with a value of `false` in the `/_config.yml` file.
135 |
136 | Another option to speed up Alembic is to enable inline CSS, which is off by default. You can enable this by setting `css_inline: true` inside your `/_config.yml` file. By switching to inline styles you bypass the use `/assets/styles.scss`, any custom styles will need to be added in `/_includes/site-styles.html` or in a new custom file.
137 |
138 | Please note that these options aren't a "silver bullet" for making your site faster, make sure to audit and debug your site to get the best performance for your situation.
139 |
140 | ### Site navigation
141 |
142 | There are a total of 4 different navigation types:
143 |
144 | - `navigation_header`: The links shown in the header (it is also used on the 404 page)
145 | - `navigation_footer`: The links shown in the footer
146 | - `social_links`: The social icon links that are shown in the sidebar
147 | - `sharing_links`: The social sharing buttons that are shown at the bottom of blog posts
148 |
149 | 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](#nav-sharehtml).
150 |
151 | 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 a regular `link`, this is so an icon can be set for the link.
152 |
153 | ### Custom fonts
154 |
155 | Alembic comes with custom fonts served from Google fonts. By default it requests Merriweather but this can be any font from any provider assuming it supports requesting fonts in the same manner and does not require javascript.
156 |
157 | This can be configured under the `custom_fonts` key.
158 |
159 | - `urls`: The urls supplied to you from your font provider (eg https://fonts.googleapis.com/css2?family=Merriweather). For best performance try to use as few urls as possible
160 | - `preconnect`: (optional) If your font provider serves the font files from another domain it can be useful to make a connection to that domain in advance. For example google load the font files from fonts.gstatic.com. This can be omitted if not required
161 |
162 | If you want to customise this further you can find the include for custom fonts in `_includes/site-custom-fonts.html`.
163 |
164 | ## Using includes
165 |
166 | 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:
167 |
168 | ### `button.html`
169 | A button that can link to a page of any kind.
170 |
171 | Example usage: `{% include button.html text="I'm a button" link="https://david.darn.es" %}`
172 |
173 | Available options:
174 | - `text`: The text of the button _required_
175 | - `link`: The link that the button goes to _required_
176 | - `icon`: The icon that is added to the end of the button text
177 | - `color`: The colour of the button
178 |
179 | ### `figure.html`
180 | An image with optional caption.
181 |
182 | Example usage: `{% include figure.html image="/uploads/feature-image.jpg" caption="Check out my photo" %}`
183 |
184 | Available options:
185 | - `image`: The image shown _required_
186 | - `caption`: A caption to explain the image
187 | - `position`: The position of the image; `left`, `right` or `center`
188 | - `width` & `height`: Optional width and height attributes of the containing image
189 |
190 | ### `icon.html`
191 | An icon.
192 |
193 | Example usage: `{% include icon.html id="twitter" %}`
194 |
195 | Available options:
196 | - `id`: The reference for the icon _required_
197 | - `title`: The accessible label for the icon
198 | - `color`: The desired colour of the icon
199 | - `width` & `height`: Width and height attributes for the icon, default is `16`
200 |
201 | ### `nav-share.html`
202 | 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.
203 |
204 | Example usage: `{% include nav-share.html %}`
205 |
206 | Available options:
207 | ``` yml
208 | Twitter: "#1DA1F2"
209 | facebook: "#3B5998"
210 | Pinterest: "#BD081C"
211 | LinkedIn: "#0077B5"
212 | tumblr: "#36465D"
213 | Reddit: "#FF4500"
214 | HackerNews: "#ff6600"
215 | DesignerNews: "#2D72D9"
216 | Email: true
217 | ```
218 |
219 | _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 remove the line of the same name._
220 |
221 | ### `video.html`
222 | A YouTube video.
223 |
224 | Example usage: `{% include video.html id="zrkcGL5H3MU" %}`
225 |
226 | Available options:
227 | - `id`: The YouTube ID for the video _required_
228 |
229 | ### `map.html`
230 | A Google map. _See Google [My Maps](https://www.google.com/mymaps)_
231 |
232 | Example usage: `{% include map.html id="1UT-2Z-Vg_MG_TrS5X2p8SthsJhc" %}`
233 |
234 | Available options:
235 | - `id`: The map ID for the map _required_
236 |
237 | ### `site-form.html`
238 | Adds a contact form to the page. This can be used with [Formspree](https://formspree.io/) or [Netlify Forms](https://www.netlify.com/docs/form-handling/) depending on your setup.
239 |
240 | Example usage: `{% include site-form.html %}`
241 |
242 | Available options:
243 | - `netlify_form=true`: Set whether you would like to use Netlify Forms, otherwise the form will default to Formspree
244 | - `name`: Give the form a name, by default the form is called "Contact". The name will be reflected when form submissions come through in Netlify or in your email client. The name is also used in the label and input elements for accessibility
245 |
246 |
247 | Use the `email` option in the `/_config.yml` to change to the desired email.
248 |
249 | ### `site-search.html`
250 | Adds a search form to the page.
251 |
252 | Example usage: `{% include site-search.html %}`
253 |
254 | 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.
255 |
256 | ### `site-before-start.html` & `site-before-end.html`
257 | Optional html includes for adding scripts, css, js or any embed code you wish to add to every page without the need to overwrite the entire `default.html` template.
258 |
259 | **Example usage:** These are different to other includes as they are designed to be overwritten. If you create a `site-before-start.html` file in the `_includes/` the contents of the file will be included immediately before the closing `` tag. If you create a `site-before-end.html` file the contents of the file will be included immediately before the closing `
` tag. 260 | 261 | ## Page layouts 262 | 263 | As well as `page`, `post`, `blog`, there are a few alternative layouts that can be used on pages: 264 | 265 | - `categories`: Shows all posts grouped by category, with an index of categories in a left hand sidebar 266 | - `search`: Adds a search field to the page as well as a simplified version of the sidebar to allow more focus on the search results 267 | 268 | ## Page and Post options 269 | 270 | There are some more specific options you can apply when creating a page or a post: 271 | 272 | - `aside: true`: Adds a sidebar to the page or post, this is false by default and will not appear 273 | - `comments: false`: Turns off comments for that post 274 | - `feature_image: "/uploads/feature-image.jpg"`: Adds a full width feature image at the top of the page 275 | - `feature_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 the `feature_image` option to create a feature image with text over it 276 | - `indexing: false`: Adds a `noindex` meta element to the `
` to stop crawler bots from indexing the page, used on the 404 page 277 | 278 | > **Note:** The Post List Page options are actually in the collection data within the `_config.yml` file. 279 | 280 | ## Credits 281 | 282 | - Thanks to [Simple Icons](https://simpleicons.org/) for providing the brand icons, by [Dan Leech](https://twitter.com/bathtype) 283 | - Thanks to [Sassline](https://sassline.com/) for the typographic basis, by [Jake Giltsoff](https://twitter.com/jakegiltsoff) 284 | - Thanks to [Flexbox mixin](https://github.com/mastastealth/sass-flex-mixin) by [Brian Franco](https://twitter.com/brianfranco) 285 | - Thanks to [Normalize](https://necolas.github.io/normalize.css/) by [Nicolas Gallagher](https://twitter.com/necolas) and [Jonathan Neal](https://twitter.com/jon_neal). 286 | - Thanks to [pygments-css](http://richleland.github.io/pygments-css/) for the autumn syntax highlighting, by [Rich Leland](https://twitter.com/richleland) 287 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Site configuration 2 | # 1. Files excluded from Jekyll builds 3 | # 2. Installed Gems 4 | # 3. Gem settings 5 | # 4. Jekyll settings 6 | # 5. Collections 7 | # 6. Jekyll collections settings 8 | # 7. Site settings 9 | # 8. Site favicons & manifest icons 10 | # 9. Site navigation 11 | 12 | # 1. Files excluded from Jekyll builds 13 | exclude: 14 | - README.md 15 | - CODE_OF_CONDUCT.md 16 | - CONTRIBUTING.md 17 | - screenshot.png 18 | - LICENSE 19 | - CNAME 20 | - Gemfile 21 | - Gemfile.lock 22 | - alembic-jekyll-theme.gemspec 23 | - .jekyll-cache 24 | 25 | # 2. Installed Gems 26 | plugins: 27 | - jekyll-sitemap 28 | - jekyll-mentions 29 | - jekyll-paginate 30 | - jekyll-seo-tag 31 | - jekyll-redirect-from 32 | - jekyll-feed 33 | - jekyll-commonmark 34 | - jekyll-include-cache 35 | - jemoji 36 | 37 | # 3. Gem settings 38 | paginate: 2 # jekyll-paginate > items per page 39 | paginate_path: blog/page:num # jekyll-paginate > blog page 40 | jekyll-mentions: https://twitter.com # jekyll-mentions > service used when @replying 41 | twitter: 42 | username: DavidDarnes # jekyll-seo-tag > Owners twitter username 43 | author: DavidDarnes # jekyll-seo-tag > default author 44 | social: # jekyll-seo-tag > social overrides 45 | name: David Darnes # jekyll-seo-tag > real name 46 | links: # jekyll-seo-tag > social aliases (sameAs) 47 | - https://twitter.com/DavidDarnes 48 | - https://www.facebook.com/daviddarnes 49 | - https://www.linkedin.com/in/daviddarnes 50 | - https://github.com/daviddarnes 51 | # markdown: CommonMark # Markdown parse settings, CommonMark performs slightly better an others in build time 52 | # commonmark: 53 | # options: ["SMART", "FOOTNOTES"] 54 | # extensions: ["strikethrough", "autolink", "table"] 55 | 56 | # 4. Jekyll settings 57 | sass: 58 | style: compressed # Style compression 59 | permalink: pretty # Permalink style (/YYYY/MM/DD/page-name/) 60 | excerpt_separator: # Marks end of excerpt in posts 61 | timezone: Europe/London # Timezone for blog posts and alike 62 | 63 | # 5. Collections 64 | collections: 65 | posts: 66 | title: Posts # Needed for Siteleaf 67 | output: true 68 | description: "My thoughts and ideas" # The post list page content 69 | feature_text: | 70 | Welcome to the blog 71 | feature_image: "https://picsum.photos/2560/600?image=866" 72 | 73 | # 6. Jekyll collections settings 74 | defaults: 75 | - 76 | scope: 77 | path: "" 78 | values: 79 | image: "/assets/default-social-image.png" # Default image for sharing 80 | - 81 | scope: 82 | path: "" 83 | type: "posts" 84 | values: 85 | layout: post # Set the default layout for posts 86 | - 87 | scope: 88 | path: "" 89 | type: "pages" 90 | values: 91 | layout: page # Set the default layout for pages 92 | 93 | # 7. Site settings 94 | encoding: utf-8 # Make sure the encoding is right 95 | lang: en-GB # Set the site language 96 | title: "Alembic" # Site name or title, also used in jekyll-seo-tag 97 | logo: "/assets/logos/logo.svg" # Site logo, also used in jekyll-seo-tag 98 | description: "Alembic is a starting point for Jekyll projects. Rather than starting from scratch, this boilerplate is designed to get the ball rolling immediately" # Site description and default description, also used in jekyll-seo-tag 99 | url: "https://alembic.darn.es" # Site url, also used in jekyll-seo-tag 100 | baseurl: "" 101 | repo: "https://github.com/daviddarnes/alembic" 102 | email: "me@daviddarnes.com" 103 | # disqus: "alembic-1" # Blog post comments, uncomment the option and set the site ID from your Disqus account 104 | # date_format: "%-d %B %Y" # Blog post date formatting using placeholder formatting 105 | # google_analytics: "" 106 | # google_analytics_anonymize_ip: "" 107 | # service_worker: false # Will turn off the service worker if set to false 108 | # short_name: "Al" # The web application short name, defaults to the site title 109 | css_inline: true # Will insert all styles into a single 5 | -------------------------------------------------------------------------------- /_includes/site-sw.html: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /_includes/video.html: -------------------------------------------------------------------------------- 1 |
4 |
--------------------------------------------------------------------------------
/_layouts/blog.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | {% include site-header.html %}
6 |
7 | {{ collectiondata.title }}
16 | {{ collectiondata.description | markdownify }}
17 |
18 | {% else %}
19 | {{ page.title }}
20 | {{ content }}
21 |
22 | {% endif %}
23 |
24 | {{ page.title }}
14 |
15 | {{ content }}
16 |
17 |
5 | 6 | 7 | 8 | 9 | {% if page.indexing == false %} 10 | 11 | {% endif %} 12 | 13 | {% if page.collectionpage %} 14 | {% seo title=false %} 15 | 16 | {% assign collectiondata = site.collections | where: "label", page.collectionpage | first %} 17 |
18 | 19 | 20 | 21 | {% else %} 22 | {% seo %} 23 | {% endif %} 24 | {% if site.fonts.preconnect_urls %} 25 | {% for url in site.fonts.preconnect_urls %} 26 | 27 | {% endfor %} 28 | {% endif %} 29 | 30 | 31 | 32 | 33 | {% if site.css_inline == true %} 34 | {% include site-styles.html %} 35 | {% else %} 36 | 37 | {% endif %} 38 | 39 | {% if site.favicons or site.avatarurl %}{% include site-favicons.html %}{% endif %} 40 | 41 | {% if site.google_analytics %}{% include site-analytics.html %}{% endif %} 42 | 43 | {% include site-fonts.html %} 44 | 45 | {% include site-before-start.html %} 46 | 47 | 48 |
57 | 58 |