skip to content
JS John Sosoka

jscom-ice

Jekyll theme for johnsosoka.com

GitHub →

jscom-ice

Overview

jscom-ice is a custom Jekyll theme built specifically for johnsosoka.com. It’s a dark-themed, minimalist blog theme designed for technical writing and personal publishing. The theme is open source and published as a Ruby gem, though it’s primarily tailored for personal use.

The theme emphasizes readability with a carefully crafted typography system using IBM Plex Sans for body text and JetBrains Mono for code blocks. It features a responsive design with both light and dark color schemes, though the dark theme is the primary aesthetic.

Features

Core Layouts

The theme provides five primary layouts:

Reusable Components

The theme includes 15+ reusable includes for common UI patterns:

ComponentPurpose
navbar.htmlResponsive navigation with mobile hamburger menu
footer.htmlSite footer with links and newsletter signup
posts.htmlBlog post listing with excerpts
post_navigation.htmlPrevious/next post navigation
tags.htmlTag cloud and post categorization
carousel.htmlImage carousel for galleries
image-modal.htmlLightbox-style image viewer
contact-me-form.htmlContact form with validation
embed-audio.htmlAudio player embed
yearly_content.htmlArchive organization by year

Newsletter System

A complete newsletter subscription system with three components:

The newsletter components integrate with a REST API and display Bootstrap-styled alerts for user feedback.

Styling Architecture

The theme uses a modular SCSS architecture organized into:

_sass/
├── main.scss # Entry point with variables
├── base/
│ └── _base.scss # Reset and base styles
├── layout/
│ ├── _layout.scss # Grid and structural styles
│ └── _footer.scss # Footer-specific styles
├── pages/
│ ├── _page.scss # Standard page styles
│ ├── _post.scss # Blog post styles
│ └── _home.scss # Homepage styles
└── component/
├── _all-components.scss # Component manifest
├── _navbar.scss # Navigation styles
├── _posts.scss # Post listing styles
├── _newsletter.scss # Newsletter form styles
├── _contact.scss # Contact form styles
├── _form.scss # Form element styles
├── _code.scss # Inline code styles
├── _codeblock.scss # Code block styling
├── _highlight.scss # Syntax highlighting
├── _carousel.scss # Image carousel
├── _author.scss # Author bio component
├── _table.scss # Table styles
├── _image-modal.scss # Lightbox modal
├── _post-navigation.scss # Post pagination
└── _github-gist.scss # GitHub Gist embedding

Typography System

Color Palette

Dark Theme (Primary):

Light Theme:

Frontend Dependencies

Usage

Installation

Add to your Jekyll site’s Gemfile:

group :jekyll_plugins do
gem "jscom_ice", '~> 1.0.1'
end

Add to _config.yml:

theme: jscom_ice

Run Bundler:

Terminal window
bundle install

Configuration

Enable footer newsletter signup in _config.yml:

newsletter:
api:
url: https://api.example.com/v1/newsletter
footer:
enabled: true
title: "Newsletter Signup"
description: "Get updates delivered to your inbox"

Creating a Newsletter Page

Create newsletter.md:

---
layout: page
title: Newsletter
permalink: /newsletter/
---
<div class="newsletter-page-container">
{% include newsletter-subscribe-form.html %}
{% include newsletter-unsubscribe-form.html %}
{% include newsletter-status-check.html %}
</div>

Gem Release

The theme is published to RubyGems. To release a new version:

  1. Update version in jscom_ice_theme.gemspec
  2. Build the gem: gem build jscom_ice_theme.gemspec
  3. Push to RubyGems: gem push jscom_ice-{version}.gem

Technology Stack

ComponentTechnology
Static Site GeneratorJekyll 4.3+
LanguageRuby
StylingSCSS with modular architecture
CSS FrameworkBootstrap 5
JavaScriptjQuery 3.7, vanilla JS
Package DistributionRubyGems
LicenseGPL-3.0

Repository

github.com/johnsosoka/jscom-ice