Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A Material Design Jekyll theme built with React, Redux, and Webpack, featuring light/dark themes, fuzzy search, and a responsive masonry layout.
Material Bliss is a Material Design-inspired Jekyll theme that pairs Jekyll's static site generation with a React, Redux, and React-Router front end, giving you dynamic features like fuzzy search and theme switching while keeping static HTML for SEO.
Material Bliss is a Jekyll theme created by InsidiousMind (GitHub user) that uses React, Redux, React-Router, and Webpack to build a hybrid static/dynamic site. It takes Jekyll-generated content, converts it to JSON via the jekyll-react and jekyll_pages_api plugins, and renders that data with React components. The theme outputs production-ready static files through a build script (./build-prod.sh) and supports both static and dynamic pages via frontmatter options. A live demo is available at code.liquidthink.net.
react in _config.yml are passed to React via Redux action creators, letting you manage state easily.The theme uses two build pipelines. For production, run ./build-prod.sh from the repository root to generate the static site. For development, run npm run jekyll in one terminal and ./build-dev.sh in a second terminal; the two processes run together to serve a live-reloading version. Before building, you must set your site's ROOT_URL in react-dev/actions/index.js, list your static routes in react-dev/helpers.js, and configure menu items in react-dev/components/menu_items.js.
Yes. The theme bundles React components with Webpack, so your build environment needs Node.js installed. The repository includes package.json and build scripts that call npm and Webpack commands.
The theme relies on custom Jekyll plugins (jekyll-react and jekyll_pages_api) to convert site data into JSON. These plugins require a Jekyll build that supports custom plugins, so GitHub Pages' standard build may not work without modification.
Open react-dev/components/menu_items.js and add an entry to the menuItems object. For example, to add a Coding page, add the object property Coding: '/coding/'.
The jekyll-react plugin generates JSON representations of your Jekyll site data, which React fetches to power dynamic features like fuzzy search and project filtering. You can think of it as an API endpoint that serves your site's content as structured JSON.
In react-dev/actions/index.js, change the ROOT_URL variable to match your production domain. For instance, if your site is at https://example.com, set const ROOT_URL = 'https://example.com';.