A simple blog theme focused on writing powered by Bulma and Zola.
Explore the docs »

Code Repository · Report Bug · Request Feature

Table of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgements

About The Project


A simple blog theme focused on writing powered by Bulma and Zola.


Built With

Getting Started

To get a local copy up and running follow these simple steps.


You need static site generator (SSG) Zola installed in your machine to use this theme follow their guide on getting started.


Follow zola's guide on installing a theme. Make sure to add theme = "DeepThought" to your config.toml

Check zola version (only 0.9.0+) Just to double-check to make sure you have the right version. It is not supported to use this theme with a version under 0.14.1.


How to serve?

Go into your sites directory and type zola serve. You should see your new site at localhost:1111.

NOTE: you must provide the theme options variables in config.toml to serve a functioning site


Zola already has great documentation for deploying to Netlify or Github Pages. I won't bore you with a regurgitated explanation.

Theme Options

# Enable external libraries
katex.enabled = true
katex.auto_render = true

chart.enabled = true
mermaid.enabled = true
galleria.enabled = true

navbar_items = [
 { code = "en", nav_items = [
  { url = "$BASE_URL/", name = "Home" },
  { url = "$BASE_URL/posts", name = "Posts" },
  { url = "$BASE_URL/docs", name = "Docs" },
  { url = "$BASE_URL/tags", name = "Tags" },
  { url = "$BASE_URL/categories", name = "Categories" },

# Add links to favicon, you can use https://realfavicongenerator.net/ to generate favicon for your site
favicon_16x16 = "/icons/favicon-16x16.png"
favicon_32x32 = "/icons/favicon-32x32.png"
apple_touch_icon = "/icons/apple-touch-icon.png"
safari_pinned_tab = "/icons/safari-pinned-tab.svg"
webmanifest = "/icons/site.webmanifest"

# Author details
name = "DeepThought"
avatar = "/images/avatar.png"

# Social links
email = "<email_id>"
facebook = "<facebook_username>"
github = "<github_username>"
gitlab = "<gitlab_username>"
keybase = "<keybase_username>"
linkedin = "<linkedin_username>"
stackoverflow = "<stackoverflow_userid>"
twitter = "<twitter_username>"
instagram = "<instagram_username>"
behance = "<behance_username>"
google_scholar = "<googlescholar_userid>"
orcid = "<orcid_userid>"
mastodon = "<mastadon_username>"

# To add google analytics
google = "<your_gtag>"

# To add disqus comments
disqus = "<your_disqus_shortname>"

# To enable mapbox maps
enabled = true
access_token = "<your_access_token>"

Multilingual Navbar

If you want to have a multilingual navbar on your blog, you must add your new code language in the languages array in the config.toml file.

NOTE: Don't add you default language to this array

languages = [
    {code = "fr"},
    {code = "es"},

And then create and array of nav item for each language:

NOTE: Include your default language in this array

navbar_items = [
 { code = "en", nav_items = [
  { url = "$BASE_URL/", name = "Home" },
  { url = "$BASE_URL/posts", name = "Posts" },
  { url = "$BASE_URL/docs", name = "Docs" },
  { url = "$BASE_URL/tags", name = "Tags" },
  { url = "$BASE_URL/categories", name = "Categories" },
 { code = "fr", nav_items = [
  { url = "$BASE_URL/", name = "Connexion" },
 { code = "es", nav_items = [
  { url = "$BASE_URL/", name = "Publicationes" },
  { url = "$BASE_URL/", name = "Registrar" },







KaTeX math formula support

This theme contains math formula support using KaTeX, which can be enabled by setting katex.enabled = true in the extra section of config.toml.

After enabling this extension, the katex short code can be used in documents:

Automatic rendering without short codes

Optionally, \\( \KaTeX \\) / $ \KaTeX $ inline and \\[ \KaTeX \\] / $$ \KaTeX $$ block-style automatic rendering is also supported, if enabled in the config by setting katex.auto_render = true.

Elasticlunr search in other language

Zola use Elasticlunr.js to add full-text search feature. To use languages other than en (English), you need to add some javascript files. See the Zola's issue #1349. By placing the templates/base.htmlon your project and using the other_lang_search_js block, you can load the required additional javascript files in the right timing.

e.g. templates/base.html

{%/* extends "DeepThought/templates/base.html" */%} {%/* block other_lang_search_js */%}
<script src="{{ get_url(path='js/lunr.stemmer.support.js') }}"></script>
<script src="{{ get_url(path='js/tinyseg.js') }}"></script>
<script src="{{/* get_url(path='js/lunr.' ~ lang ~ '.js') */}}"></script>
<script src="{{ get_url(path='js/search.js') }}"></script>
{%/* endblock */%}

More detailed explanations are aound in elasticlunr's documents.


See the open issues for a list of proposed features (and known issues).


Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request


Distributed under the MIT License. See LICENSE for more information.


Ratan Kulshreshtha - @RatanShreshtha>

Project Link: https://github.com/RatanShreshtha/DeepThought