StupidGreen β A fast static blog generator built on top of Supranim
Compiled β’ Lightweight β’ Fast β’ π Written in Nim language
nimble install stupidgreen
- π₯ Compiled, extremely lightweight, super fast!
- Markdown support for writing content with YAML frontmatter
- Blog capabilities with support for tags and categories
- Support for pages and nested structure (
pages/projects/x.mdto/projects/x) - RSS/Atom feed + sitemap.xml + llms.txt generation
- Lazy loading of iframes, images and other media
- Search functionality with support for fuzzy search and search suggestions
/llms.txtfrompages/llms.md(LLM-friendly plain text)- Reading time & body-derived excerpts with "Continue reading" links
- OpenGraph Image generation for social media sharing
- Easy to extend with custom CSS and JS
StupidGreen is a static blog generator written in Nim. It takes a directory of Markdown files and generates a fully static website, powered by Supranim, Tim Engine, Marvdown and Boogie.
stupidgreen new my-blog && cd my-blog
stupidgreen post "Hello World" # create a new post
stupidgreen run --sync # development server with live reload
stupidgreen build . # generate the static site into `_build/`my-blog/
βββ stupidgreen.config.yaml # site configuration
βββ posts/ # blog posts (title, date, tags, draft, ...)
β βββ index.md # homepage intro (blog index) when no pages/index.md
β βββ hello-world.md
βββ pages/ # standalone pages, mapped to their URL path
β βββ index.md # homepage intro, rendered above the post list
β βββ about.md # /about
β βββ llms.md # /llms.txt (plain text)
β βββ projects/
β βββ index.md # /projects
β βββ demo.md # /projects/demo
βββ assets/ # optional `style.css` override
---
title: "Hello World"
date: 2026-01-15
tags: [nim, blogging]
categories: [tutorial]
author: "George Lemon"
excerpt: "Optional custom excerpt" # overrides the auto-generated one
cover: "/assets/cover.jpg"
draft: false
---Any .md file in pages/ becomes a standalone page at its path. index.md is
reserved for the first page of a directory (pages/projects/index.md β /projects).
The homepage always renders the blog index (index.timl): it shows the intro from
pages/index.md (or posts/index.md) above the list of post cards.
Note: page files under reserved route paths (
/posts/*,/page/*,/tags/*,/categories/*,/search,/feed.xml,/sitemap.xml,/llms.txt) are shadowed by those routes.
stupidgreen.config.yaml supports metadata (title, description, url, author),
appearance (theme, container widths), header (search, notification), content
(reading time, excerpt length, read-more label, lazyload), pagination (per_page),
feed (kind rss/atom, limit) and navbar/footer links.
- π Found a bug? Create a new Issue
- π Wanna help? Fork it!
- π Spread the word! Tell your friends about StupidGreen
![]() |
Switch to Open-Source LLMs via OpenCode GO, choosing from a variety of powerful models such as DeepSeek, Qwen, Kimi, GLM-5, MiniMax, MiMo. π Use our referral link to get started! |
StupidGreen | AGPLv3 license. Made by Humans from OpenPeeps.
Copyright Β© 2026 OpenPeeps & Contributors β All rights reserved.
