├── .gitignore
├── 404.md
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── README.md
├── _config.yml
├── _data
├── authors.yml
└── navigation.yml
├── _includes
├── analytics.html
├── contact-form.html
├── footer.html
├── head.html
├── header.html
├── navigation.html
└── page-intro.html
├── _layouts
├── 404.html
├── blog.html
├── compress.html
├── contact.html
├── default.html
├── home.html
├── page.html
└── post.html
├── _posts
├── 2018-02-23-welcome-to-jekyll.md
├── 2018-07-09-another-post.md
├── 2018-07-11-a-simple-post.md
└── 2018-07-19-the-most-recent-post-so-far.md
├── _sass
├── main.scss
└── partials
│ ├── _app.scss
│ ├── _fonts.scss
│ ├── _mixins.scss
│ ├── _normalize.scss
│ ├── _typography.scss
│ ├── _utilities.scss
│ └── _variables.scss
├── admin
├── config.yml
├── index.html
└── preview-templates
│ ├── index.js
│ ├── page.js
│ └── post.js
├── assets
├── img
│ └── uploads
│ │ └── screenshot-editor.jpg
└── main.scss
├── docker-compose.yml
├── netlify.toml
└── pages
├── about.md
├── blog.md
├── contact.md
└── index.md
/.gitignore:
--------------------------------------------------------------------------------
1 | _site
2 | .sass-cache
3 | .jekyll-metadata
4 | .users.yml
5 |
--------------------------------------------------------------------------------
/404.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: 404
3 | title: Page not found
4 | permalink: /404.html
5 | section: 404
6 | ---
7 |
8 | ## 404
9 |
10 | Sorry, the requested page could not be found.
11 |
12 | Please visit the [Home Page](/) instead.
13 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | # Hello! This is where you manage which Jekyll version is used to run.
4 | # When you want to use a different version, change it below, save the
5 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
6 | #
7 | # bundle exec jekyll serve
8 | #
9 | # This will help ensure the proper Jekyll version is running.
10 | # Happy Jekylling!
11 | gem "jekyll", "~> 3.8"
12 |
13 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
14 | # uncomment the line below. To upgrade, run `bundle update github-pages`.
15 | # gem "github-pages", group: :jekyll_plugins
16 |
17 | # If you have any plugins, put them here!
18 | group :jekyll_plugins do
19 | #
20 | end
21 |
22 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
23 | gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
24 |
25 | # Performance-booster for watching directories on Windows
26 | gem "wdm", "~> 0.1.0" if Gem.win_platform?
27 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | addressable (2.5.2)
5 | public_suffix (>= 2.0.2, < 4.0)
6 | colorator (1.1.0)
7 | concurrent-ruby (1.1.4)
8 | em-websocket (0.5.1)
9 | eventmachine (>= 0.12.9)
10 | http_parser.rb (~> 0.6.0)
11 | eventmachine (1.2.7)
12 | ffi (1.9.25)
13 | forwardable-extended (2.6.0)
14 | http_parser.rb (0.6.0)
15 | i18n (0.9.5)
16 | concurrent-ruby (~> 1.0)
17 | jekyll (3.8.5)
18 | addressable (~> 2.4)
19 | colorator (~> 1.0)
20 | em-websocket (~> 0.5)
21 | i18n (~> 0.7)
22 | jekyll-sass-converter (~> 1.0)
23 | jekyll-watch (~> 2.0)
24 | kramdown (~> 1.14)
25 | liquid (~> 4.0)
26 | mercenary (~> 0.3.3)
27 | pathutil (~> 0.9)
28 | rouge (>= 1.7, < 4)
29 | safe_yaml (~> 1.0)
30 | jekyll-sass-converter (1.5.2)
31 | sass (~> 3.4)
32 | jekyll-watch (2.1.2)
33 | listen (~> 3.0)
34 | kramdown (1.17.0)
35 | liquid (4.0.1)
36 | listen (3.1.5)
37 | rb-fsevent (~> 0.9, >= 0.9.4)
38 | rb-inotify (~> 0.9, >= 0.9.7)
39 | ruby_dep (~> 1.2)
40 | mercenary (0.3.6)
41 | pathutil (0.16.2)
42 | forwardable-extended (~> 2.6)
43 | public_suffix (3.0.3)
44 | rb-fsevent (0.10.3)
45 | rb-inotify (0.10.0)
46 | ffi (~> 1.0)
47 | rouge (3.3.0)
48 | ruby_dep (1.5.0)
49 | safe_yaml (1.0.4)
50 | sass (3.7.2)
51 | sass-listen (~> 4.0.0)
52 | sass-listen (4.0.0)
53 | rb-fsevent (~> 0.9, >= 0.9.4)
54 | rb-inotify (~> 0.9, >= 0.9.7)
55 |
56 | PLATFORMS
57 | ruby
58 |
59 | DEPENDENCIES
60 | jekyll (~> 3.8)
61 | tzinfo-data
62 |
63 | BUNDLED WITH
64 | 1.16.1
65 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Dan Urbanowicz
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Jekyll Netlify Boilerplate
2 |
3 | *Note: Check out my [Eleventy Netlify Boilerplate](https://github.com/danurbanowicz/eleventy-netlify-boilerplate). It does pretty much the same as this project but uses the [Eleventy](https://www.11ty.io/) static site generator. It's fast, flexible and doesn't require Ruby.*
4 |
5 | **A really simple Jekyll template for creating a fast, static website on Netlify with
6 | a continuous deployment workflow.**
7 |
8 | 🔥 **This project is featured on Netlify's official [template showcase](http://templates.netlify.com/template/jekyll-with-netlify-cms-boilerplate/) and blog: [The top 10 Static Site Generators to watch in 2018](http://templates.netlify.com/template/jekyll-with-netlify-cms-boilerplate/)** 🔥
9 |
10 | * Minimal styling, ready to make your own
11 | * Example blog posts, pages and contact form
12 | * Responsive CSS Grid layout with fallbacks for older browsers
13 | * Continuous Deployment workflow via Netlify and Github
14 | * Netlify CMS for managing content
15 | * Netlify Identity for authenticating users
16 | * Netlify Forms for processing your static HTML forms with reCAPTCHA
17 | * Optional Netlify `_redirects` and `_headers` files ready to use
18 | * Jekyll SASS pipeline
19 | * Minified HTML and CSS
20 |
21 | Based on Netlify's [Jekyll + Netlify CMS](https://github.com/netlify-templates/jekyll-netlify-cms) starter template, head over there for more details on deployment and build settings or to get help with setting up Netlify.
22 |
23 | For help with templates, local development and other Jekyll related stuff, check out the excellent [Jekyll Docs](https://jekyllrb.com/docs/home/).
24 |
25 | ## [View Demo](https://jekyll-netlify-boilerplate.netlify.com/)
26 |
27 | ## Performance
28 |
29 | You can test the demo site's TTFB (Time To First Byte) at [testmysite.io](https://testmysite.io/5b50abe51f12b74b81dd5442/jekyll-netlify-boilerplate.netlify.com)
30 |
31 | ## Getting started
32 |
33 | Simply click the deploy button to get your own copy of the repository deployed to Netlify:
34 |
35 | [](https://app.netlify.com/start/deploy?repository=https://github.com/danurbanowicz/jekyll-netlify-boilerplate&stack=cms)
36 |
37 | This will setup everything needed for running the CMS:
38 |
39 | * A new repository in your GitHub account with the code
40 | * Full Continuous Deployment to Netlify's global CDN network
41 | * Control users and access with Netlify Identity
42 | * Manage content with Netlify CMS
43 |
44 | ### Setup authentication
45 |
46 | After deploying this project, Netlify Identity will add you as a CMS user and
47 | will email you an invite. It is not necessary to accept this invite if you wish
48 | to use an
49 | [OAuth provider](https://www.netlify.com/docs/identity/#external-provider-login)
50 | (e.g. Github) to manage authentication for your CMS.
51 | It is recommended to use this method of authentication as it removes the need
52 | for an email & password to log in to the CMS and is generally more secure. You
53 | will need to add an OAuth provider in your Netlify app settings under
54 | "Settings" > "Identity" > "External providers".
55 |
56 | Next, navigate to `/admin` on your site, choose your OAuth provider from the
57 | login box and you should then be logged into your CMS.
58 |
59 | Now you're all set, and you can start editing content!
60 |
61 | **Note:** if you switch the repo that was created to private, you'll need to regenerate your token,
62 | as the token generated using the deploy to Netlify button can only access public repositories. To
63 | regenerate your token, head to "Settings" in your Netlify site dashboard, go to the "Identity"
64 | section, then scroll to "Services" where you'll see an "Edit settings" button. Click that and you'll
65 | see a text link to "Generate access token in GitHub".
66 |
67 | ## Local Development
68 |
69 | Clone this repository and run:
70 |
71 | ```bash
72 | bundle install
73 | bundle exec jekyll server --watch
74 | ```
75 |
76 | In case you don't want to install ruby-bundler you can use docker:
77 |
78 | ```bash
79 | docker-compose up
80 | ```
81 |
82 | Jekyll will watch your project folder for changes.
83 |
84 | Now navigate to [localhost:4000](http://localhost:4000/) to preview the site, and
85 | [localhost:4000/admin](http://localhost:4000/admin) to log into the CMS.
86 |
87 | ## Bug reports, feature requests, etc
88 |
89 | This is an ongoing project and I welcome contributions. Feel free to submit a PR.
90 |
91 | If you need any help with setting up Netlify CMS, you can reach out to the Netlify team in the [Netlify CMS Gitter](https://gitter.im/netlify/netlifycms).
92 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | # Welcome to Jekyll!
2 | #
3 | # This config file is meant for settings that affect your whole blog, values
4 | # which you are expected to set up once and rarely edit after that. If you find
5 | # yourself editing this file very often, consider using Jekyll's data files
6 | # feature for the data you need to update frequently.
7 | #
8 | # For technical reasons, this file is *NOT* reloaded automatically when you use
9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10 |
11 | # Site settings
12 | # These are used to personalize your new site. If you look in the HTML files,
13 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
14 | # You can create any custom variable you would like, and they will be accessible
15 | # in the templates via {{ site.myvariable }}.
16 | title: Jekyll Netlify Boilerplate
17 | email: your-email@example.com
18 | description: >- # this means to ignore newlines until "baseurl:"
19 | Write an awesome description for your new site here. You can edit this
20 | line in _config.yml.
21 | baseurl: "" # the subpath of your site if applicable, e.g. /blog
22 | url: "https://jekyll-netlify-boilerplate.netlify.com" # the base hostname & protocol for your site, e.g. https://example.com
23 |
24 | # Permalink format (/blog/ is ignored for pages)
25 | permalink: /blog/:title
26 |
27 | # Enable section IDs in frontmatter, useful for identifying current page
28 | # (used as a hook for styling etc)
29 | section: true
30 |
31 | # set to 'true' to enable Netlify CMS (/admin) in production builds
32 | netlifycms: true
33 |
34 | # set to 'true' to enable Google Analytics tracking code in production builds
35 | analytics: false
36 |
37 | # Compress CSS
38 | sass:
39 | style: compressed
40 | sass_dir: _sass
41 |
42 | # Compress HTML (in liquid via layouts/compress.html)
43 | compress_html:
44 | clippings: all
45 |
46 | # set some common post defaults
47 | defaults:
48 | -
49 | scope:
50 | path: "" # an empty string here means all files in the project
51 | type: "posts" # previously `post` in Jekyll 2.2.
52 | values:
53 | layout: "post" # set the correct default template for a post
54 | section: "post" # set the root section name
55 |
56 | # Build settings
57 | markdown: kramdown
58 |
59 | # Kramdown options
60 | kramdown:
61 | # Prevent IDs from being added to h1-h6 tags
62 | auto_ids: false
63 |
64 | # Include in processing (e.g. Netlify directives)
65 | # Uncomment before use
66 |
67 | #include:
68 | # - _redirects
69 | # - _headers
70 |
71 | # Exclude from processing.
72 | # The following items will not be processed.
73 | exclude:
74 | - README.md
75 | - LICENSE.txt
76 | - netlify.toml
77 | - feed.xml
78 | - Gemfile
79 | - Gemfile.lock
80 | - docker-compose.yml
81 | - node_modules
82 | - vendor/bundle/
83 | - vendor/cache/
84 | - vendor/gems/
85 | - vendor/ruby/
86 |
--------------------------------------------------------------------------------
/_data/authors.yml:
--------------------------------------------------------------------------------
1 | # specify site authors in this file
2 | # you can add .yml files for any other global data in this folder
3 |
4 | dan_urbanowicz:
5 | name: Dan Urbanowicz
6 | email: dan.urbanowicz@gmail.com
7 | web: https://www.danurbanowicz.com
8 | john_doe:
9 | name: John Doe
10 | email: johndoe@email.com
11 | web: http://twitter.com/johndoe
12 |
--------------------------------------------------------------------------------
/_data/navigation.yml:
--------------------------------------------------------------------------------
1 | # specify main menu items here
2 |
3 | - text: Home
4 | url: /
5 | - text: About
6 | url: /about
7 | - text: Contact
8 | url: /contact
9 | - text: Blog
10 | url: /blog
11 |
--------------------------------------------------------------------------------
/_includes/analytics.html:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/_includes/contact-form.html:
--------------------------------------------------------------------------------
1 |
42 |
43 |
44 | `;
45 | }
46 | });
47 |
48 | export default Post;
49 |
--------------------------------------------------------------------------------
/assets/img/uploads/screenshot-editor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danurbanowicz/jekyll-netlify-boilerplate/5f16718ff14cf3e158897d6590a5b0c83f64f368/assets/img/uploads/screenshot-editor.jpg
--------------------------------------------------------------------------------
/assets/main.scss:
--------------------------------------------------------------------------------
1 | ---
2 | # Only the main Sass file needs front matter (the dashes are enough)
3 | ---
4 |
5 | @import "main";
6 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.3'
2 |
3 | services:
4 | jekyll:
5 | image: jekyll/jekyll:latest
6 | command: jekyll serve --watch --force_polling --verbose
7 | ports:
8 | - 4000:4000
9 | volumes:
10 | - .:/srv/jekyll
11 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | command = "jekyll build"
3 | publish = "_site"
4 |
5 | [build.environment]
6 | JEKYLL_ENV = "production"
7 |
8 | # REDIRECT and HEADERS examples.
9 | # Uncomment to use. Directives in this file will ALWAYS override any identical
10 | # directives present in either _redirects and _headers files, and also any
11 | # settings added in Netlify's admin interface.
12 |
13 | # Redirects and headers are GLOBAL for all builds – they do not get scoped to
14 | # contexts no matter where you define them in the file.
15 | # For context-specific rules, use _headers or _redirects files, which are
16 | # applied PER-DEPLOY.
17 |
18 | # For more information see:- https://www.netlify.com/docs/netlify-toml-reference/
19 |
20 | # Redirect rule example
21 |
22 | #[[redirects]]
23 | # from = "/*"
24 | # to = "/blog/:splat"
25 |
26 | # The default HTTP status code is always 301, but you can define a different
27 | # one e.g. status = 302
28 |
29 | # Headers rule example
30 | # For more information see:- https://www.netlify.com/docs/netlify-toml-reference/
31 |
32 | #[[headers]]
33 | # Define which paths this specific [[headers]] block will cover.
34 | # for = "/*"
35 |
36 | #[headers.values]
37 | # X-Frame-Options = "DENY"
38 | # X-XSS-Protection = "1; mode=block"
39 | # Content-Security-Policy = "frame-ancestors https://www.facebook.com"
40 |
41 | # For more information see:- https://www.netlify.com/docs/netlify-toml-reference/
42 |
--------------------------------------------------------------------------------
/pages/about.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: About
4 | meta_description: |
5 | This sets the meta description in the head of the page. You can watch the
6 | output in the browser or in the generated file _site/about.html.
7 | permalink: /about
8 | section: about
9 | intro_paragraph: |
10 | This is an example of a standard Jekyll page. You can edit it with Netlify
11 | CMS, accessible at `/admin/index.html` or by editing `pages/about.md` in a text editor.
12 | ---
13 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
14 |
15 | ### A heading
16 |
17 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
18 |
19 | #### Another heading
20 |
21 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
22 |
--------------------------------------------------------------------------------
/pages/blog.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: blog
3 | title: The Blog
4 | permalink: /blog
5 | section: blog
6 | intro_paragraph: >
7 | This is the Blog index page, listing each post with an
8 | automatically generated post excerpt. It's a normal Jekyll page but uses
9 | the `_layouts/blog.html` template to output the blog's posts after the page
10 | content.
11 | ---
12 |
--------------------------------------------------------------------------------
/pages/contact.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: contact
3 | title: Contact
4 | permalink: /contact
5 | section: contact
6 | intro_paragraph: |-
7 |
8 | The contact form on this page uses
9 | [Netlify Forms](https://www.netlify.com/docs/form-handling/) to process
10 | submissions, and saves them in your Netlify account where you can optionally
11 | set up notifications. Each submission is passed through a spam filter and if
12 | flagged, will display a CAPTCHA challenge to the user.
13 | ---
14 |
15 | **Send us a message**
16 |
--------------------------------------------------------------------------------
/pages/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: home
3 | title: Welcome
4 | permalink: /
5 | section: home
6 | intro_paragraph: >
7 | [Jekyll Netlify Boilerplate](https://github.com/danurbanowicz/jekyll-netlify-boilerplate)
8 | provides the basics to get a fast, static website deployed on Netlify.
9 | Features [Netlify CMS](https://www.netlifycms.org), responsive
10 | CSS Grid layout, sample
11 | pages and posts, and a continuous deployment workflow.
12 | ---
13 |
--------------------------------------------------------------------------------