# Trilium Share – Gruvbox Blog System [![License](https://img.shields.io/badge/License-GPL--3.0-fb4934)](LICENSE) [![TriliumNext](https://img.shields.io/badge/TriliumNext-Public%20Share-83a598)](https://github.com/TriliumNext/Trilium) [![Theme](https://img.shields.io/badge/Theme-Gruvbox-98971a)](https://github.com/morhetz/gruvbox) [![Built with](https://img.shields.io/badge/Built%20with-Opencode-fe8019)](https://opencode.ai) [![Model](https://img.shields.io/badge/Model-Deepseek%20V4%20Flash-d3869b)](https://www.deepseek.com/) > **Note:** This theme and blog system was created with the help of > [**Opencode**](https://opencode.ai) and **Deepseek V4 Flash**. A complete **public-share blog system + Gruvbox theme** for [TriliumNext](https://github.com/TriliumNext/Trilium). It turns a normal Trilium note tree into a themed, searchable blog with categories, an RSS feed, a sitemap, a digital garden (growth states) and client-side rendering of Mermaid, Excalidraw and mind-map notes. Everything is driven by Trilium's built-in **Public Share** feature plus a few frontend/backend scripts – no external dependencies (except `highlight.js`, vendored in `lib/`). ![Gruvbox palette](assets/palette.png) *Palette from the [morhetz/gruvbox](https://github.com/morhetz/gruvbox) repository.* ## Features - Gruvbox light/dark theme for the share, with a theme toggle in the header. - Blog index, category pages, sub-categories, tags and tag overview. - Article metadata: date, category, summary, tags, prev/next navigation, reading time. - **Digital Garden**: `state` labels (Seed → Evergreen, Draft, Review) rendered as badges and colour-coded growth tables. - **Search** (client-side over a generated index), **RSS feed** and **sitemap.xml**. - **Widget rendering** for Mermaid, Excalidraw (canvas) and MindElixir (mind map) notes, with a collapsible, highlighted "Source" block and copy button. - Code highlighting (highlight.js + line numbers) and copy buttons on all code boxes. - Optional "Buy me a coffee" button with locally-hosted Cookie font. - `blog_generator` (backend) builds index/feed/sitemap/search-data; `blog_publish_manager` moves notes between an `Unpublished` staging area and the live blog. ## Repository layout | Path | Content | Trilium note type / mime | |---|---|---| | `blog_generator.js` | backend script that generates index, feed, sitemap, search data, category & tag pages | code, `application/javascript;env=backend` | | `blog_publish_manager.js` | backend script that mirrors notes between `Unpublished` and the blog | code, `application/javascript;env=backend` | | `theme/blog_share_theme.css` | the Gruvbox share theme | code, `text/css` | | `theme/favicon.svg` | default site favicon | code (SVG) | | `theme/cookie.woff2` | "Cookie" font for the Buy me a coffee button | file, `font/woff2` | | `lib/highlight.js` | vendored highlight.js | code, `application/javascript` | | `lib/hljs_line_numbers.js` | highlight.js line-numbers plugin | code | | `scripts/*.js` | frontend share snippets (content is pasted **verbatim** into a code note, including the `