Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Astro-based lightweight static blog theme with a citrus-orange (#E86233) palette, grid-paper styling, i18n and Pagefind search.

An Astro static theme for blogs, knowledge bases, and product documentation, with bilingual routing, Pagefind search, docs sidebars, and dark mode.

Content-first blog starter built with Next.js 16, React 19, Tailwind CSS v4 and Contentlayer2, with Markdown/MDX, Fuse.js search and dark mode.

A minimal literary Hugo theme with Tufte-style sidenotes, a three-ink palette, and CJK font subsetting, forked from PaperMod.

A monochrome, brutalist Medium-inspired Hugo blog theme with IndieWeb support, webmentions, and no-JS performance.
CitrusGrid (柑橘格子) is an Astro-based static blog theme with a citrus-orange (#E86233) accent and grid-paper background, turning Markdown files with YAML frontmatter into a pre-rendered blog you can host on any static platform.
CitrusGrid is a static blog theme built on Astro that converts Markdown posts with YAML frontmatter into a pre-rendered site, using a citrus-orange (#E86233) primary color and a squared draft-paper background. It is published by GitHub user rightdoor (repository rightdoor/citrus-grid), requires Node.js 22.14.0 or newer and Astro 7.2.9 or newer, and installs dependencies with pnpm. Site-wide options live in a single TypeScript file, src/site.config.ts, and pnpm build produces a dist directory for static hosting; a live demo runs at citrusgrid.pages.dev.
pnpm build runs Pagefind to generate a local full-text search index, so no search service is needed.site.config.ts for configuration and Biome for formatting and linting.pnpm new-post [slug] to generate a post template, then fill in frontmatter fields such as title, slug, index, description, category, tags, published, updated and draft.index field to a positive integer to pin a post, with larger numbers ranking higher; 0 leaves it unpinned.pnpm build, then upload the dist output to any platform; pnpm preview checks the built site locally.src/comments/ and src/stats/.pnpm install (a preinstall hook runs only-allow pnpm, so npm and yarn are rejected).src/site.config.ts to set blog options, and optionally disable automatic updated timestamps written from file modification times.pnpm dev and open http://localhost:4321.pnpm build for production, which injects modulepreload, minifies inline scripts and generates the Pagefind search index.Supporting commands include pnpm check (astro check), pnpm type-check (tsc over src and scripts), pnpm format-post-meta to reorder frontmatter fields, and pnpm format, pnpm format:all and pnpm lint for Biome.
CitrusGrid is free and open source under the MIT License, with terms in the repository's LICENSE.txt file.
Astro Paper.
Yes. CitrusGrid is released under the MIT License, so you can use, modify and self-host it without paying for tiers or seats. There is no hosted paid plan; you deploy the built dist folder to your own static host.
You need Node.js 22.14.0 or newer and Astro 7.2.9 or newer. Dependency installation is locked to pnpm, enforced by a preinstall script running only-allow pnpm, so npm and yarn installs will be blocked.
Comments are pluggable with a current utterances adapter. Statistics are only partly built in: the visitor-stats plugin requires you to deploy the companion service on a Cloudflare Worker yourself, and the reading-statistics interface is reserved rather than active.
CitrusGrid ships Chinese, English and Japanese localization for the interface, with README translations in docs/README.en.md and docs/README.ja.md. Content itself is written in Markdown, so posts can be authored in any language.
Required fields are title, slug, index, description, category, tags and published. The optional updated field is written automatically at dev and build time from the file modification time unless you turn that off in src/site.config.ts, and draft marks unpublished posts.
