Personal site and blog for Garrett D. Bates built with Jekyll and the Minima theme. The repo hosts the content served at https://garrettdbates.com and contains a few custom layouts, embeds, and redirects layered on top of the stock Jekyll stack.
- Ensure Ruby 3.1+ and Bundler are installed (
gem install bundlerif needed). - Install dependencies:
bundle install - Run the site locally:
bundle exec jekyll serve --livereload- Visit http://127.0.0.1:4000 to preview changes. The site reloads when you save files, but edits to
_config.ymlrequire restarting the server.
- Visit http://127.0.0.1:4000 to preview changes. The site reloads when you save files, but edits to
- Build for production:
JEKYLL_ENV=production bundle exec jekyll build- The generated site is written to
_site/.
- The generated site is written to
_posts/holds published articles. Each file uses standard Jekyll front matter plus optional fields that the custom post layout reads (read_time,view_count,comment_count,last_modified_at).2024/contains redirect stubs to preserve historical URLs. Each Markdown file there setslayout: redirectand aredirecttarget._layouts/overrides Minima templates. Notablypost.htmladds share buttons, view/comment counters, and GA snippets, whileredirect.htmlhandles legacy URL redirects and analytics._includes/stores reusable partials (Mailchimp embed, RSS subscribe button, share buttons, etc.).assets/contains Sass overrides (main.scss) and static article assets grouped by slug._config.ymldefines site metadata, plugins, and permalink structure.CNAMEpins the custom domain for GitHub Pages.
- Use the bundled
jekyll-composeplugin to scaffold new entries. Example:bundle exec jekyll compose "My New Post" --collection postsbundle exec jekyll compose "Feature Draft" --collection drafts
- Add optional front matter values if you want estimated read time, view counts, or comment counts rendered with the post metadata.
- Assets referenced in posts should live under
assets/<slug>/so they are copied during the build.
- The project is configured for GitHub Pages with a custom domain. Pushes to the default branch trigger the build that serves
https://garrettdbates.com. - Update the
CNAMEfile if the domain ever changes. - Remember to run
bundle updateperiodically to keep Jekyll, Minima, and plugin dependencies current.
- If dependencies change, re-run
bundle install. - Delete
.jekyll-cache/and_site/if you encounter stale assets or layout issues before rebuilding. - Check
bundle exec jekyll doctorfor configuration warnings.