Back to themes

PlainBlog

A near-black, text-first blog theme: breadcrumb navigation instead of a navbar, per-year archives, and a denser Markdown layout.


Cost

Free


Created by
梧桐雨

PlainBlog is a static blog theme for people who publish text and little else. One near-black background, one column capped at 65ch, system fonts — no UI framework, no Tailwind, no client-side router.


Navigation is a breadcrumb, Home / Blog / Post title, with a small arrow beside Home that expands a site directory on demand, so there is no permanent navbar. Projects and About live in that directory; Home stays in the breadcrumb and is never duplicated. The menu uses native <details>/<summary>, so it still opens and every page stays reachable with JavaScript disabled. The only scripts close the menu on outside click or Escape, and remember a light/dark choice.


Articles are plain Markdown files with title, date, and an optional draft. The home page lists published posts by year with MM/DD on the right; drafts never reach the archive and never build a route. The slug comes from the filename (lowercase kebab-case), dates are validated as real calendar days at build time, and invalid frontmatter, slugs, or missing local images fail the build with a pointer to the offending file. Markdown covers tables, task lists, strikethrough, dual light/dark Shiki code highlighting, images, blockquotes, and nested lists.


Site identity and directory entries live in a single src/config.ts. Output is plain static HTML/CSS, so any static host works: SITE_URL adds canonical URLs and absolute RSS links, and BASE_PATH covers deployments under a sub-path such as a GitHub Pages project site.