Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Hexo blog starter with Netlify CMS, Material Design theme, language-based redirects, and one-click deploy to Netlify.
Hexo + Netlify CMS Starter is a blog boilerplate that pairs the Hexo static site generator with Netlify CMS, preconfigured for one-click deployment to Netlify and based on Viosey's Material Design theme.
The starter is a ready-to-run example site that combines Hexo, a fast Node.js static site generator, with Netlify CMS, a git-based headless CMS. It takes a repository with sample markdown posts and a preconfigured admin panel, and produces a deployable blog with a CMS for editing content in the browser. The project is based on Viosey's hexo-theme-material and is hosted live at https://hexo-material-cms.netlify.com, with the source repository at github.com/lunaceee/hexo-material-netlify.
git clone --recursive, run npm install and hexo server to preview the blog locally on port 4000.hexo server to view the site at localhost:4000 and use the admin panel at localhost:4000/admin to test the editing flow.The starter wires together three pieces: Hexo generates the static site from markdown in source/_posts and translated pages in folders like source/zh-cn; Netlify CMS provides an editing interface backed by the config at admin/config.yml; and Netlify's platform handles Git-based deploys, redirects, and language detection. For local development, the repository relies on a git submodule for the Material theme, so you must clone with --recursive or run git submodule update after cloning.
Because the Material theme is included as a git submodule. Without the flag, the theme folder stays empty and Hexo won't render the site. You can also run git submodule init and git submodule update after a normal clone to fetch it.
It lives at /admin on your deployed site, for example localhost:4000/admin during local development. The admin/index.html and admin/config.yml files are part of the repository, so no separate setup is required.
Add a language list to your root _config.yml using language: and i18n_dir: :lang, set a lang value in each post's front matter, then add redirect rules in the _redirects file matching your folder structure, such as / /zh-cn 302 Language=zh.
By default the theme shows all posts. To show only the visitor's language, install and configure the hexo-generator-index-i18n plugin, which filters the home page index based on the current language path.