Yefeme
Yefeme is Yefim's custom Jekyll theme. You can use it but you don't have to. It's mainly good for blogs.
Demo
I use this theme for my personal blog.
Installation
Add this line to your Jekyll site's Gemfile:
gem 'yefeme'
And add this line to your Jekyll site's _config.yml:
theme: yefeme
And then execute:
$ bundle
Usage
Configuration variables
Yefeme will respect the following variables, if set in your site's _config.yml:
author: [Your name]
title: [The title of your site]
description: [A short description of your site's purpose]
url: [URL of your site]
lang: [Language of your site]
email: [Your email]
twitter_username: [Your Twitter handle]
github_username: [Your GitHub handle]
Photography shoots
The home layout can mix posts with a shoots collection in reverse chronological order. Configure the collection and Cloudflare Images delivery variants in your site's _config.yml:
collections:
shoots:
output: true
permalink: /portfolio/:name
cf_images_account_hash: [Your Cloudflare Images account hash]
cf_images_variants:
thumb: thumb
xl: xl
Each document in _shoots should use the shoot layout and provide a title, date, and list of Cloudflare images. Include the intrinsic dimensions of the thumb variant so browsers can reserve each image's aspect ratio before it loads:
---
layout: shoot
title: Marseille
date: 2025-11-25
images:
- id: image-id-one
width: 1366
height: 910
blurhash: "LSD+;-t74.NF~XRiD%t7_3WBM_oe"
- id: image-id-two
width: 910
height: 1366
blurhash: "LaEV$vM_4ns:~qM{D%of-;M{WBof"
---
The theme decodes each BlurHash in the browser and displays it as an immediate placeholder behind the full thumbnail. Selecting a thumbnail opens the shoot in a full-screen lightbox with button, keyboard, and swipe navigation. Scalar image IDs remain supported for existing sites, but do not provide intrinsic sizing or placeholder information.
Contributing
Bug reports and pull requests are welcome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
Development
To set up your environment to develop this theme, run bundle install.
Your theme is setup just like a normal Jekyll site! To test your theme, run bundle exec jekyll serve and open your browser at http://localhost:4000. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
Gem releases are built from a clean checkout and include the tracked theme layouts, includes, Sass, and browser assets selected by yefeme.gemspec. The release workflow verifies the package and rejects site content from _posts or _shoots.
Releasing
Gem releases are published by the Release gem GitHub Actions workflow using RubyGems Trusted Publishing. Publishing uses short-lived credentials, so the repository does not need a RUBYGEMS_API_KEY secret.
-
Update the version in
yefeme.gemspecand merge the change tomaster. -
Create and push the matching version tag, for example:
git tag v0.8.5 git push origin v0.8.5
The release workflow verifies that the tag matches the gemspec, builds and inspects the package from a clean checkout, publishes it to RubyGems, and waits until the release is available from RubyGems indexes.
Trusted Publishing is configured for yefim/yefeme, the release.yml workflow, and the release GitHub environment. Configure required reviewers on that environment if releases should retain a manual approval gate.
License
The theme is available as open source under the terms of the MIT License.