This documentation is also published as Markdown for efficient machine reading: the whole site is indexed at /llms.txt, and every page has a clean Markdown copy under /_llms/. These are generated from the same source and cost far fewer tokens to read than this rendered HTML.

Skip to main content Skip to navigation
Showcase

Built with Pennington

A gallery of sites and tools built with Pennington — and the .NET-native stack it grew up alongside.

A gallery of sites and tools built with Pennington — and the .NET-native stack it grew up alongside. Each one leans on the content pipeline differently; these are the ones worth a closer look.

MonorailCSS

monorailcss.github.io/MonorailCss.Framework
monorailcss.github.io/MonorailCss.Framework
Screenshot of MonorailCSS

A Tailwind-compatible JIT CSS engine written in pure C# — and the engine that styles Pennington itself. Hand it utility class names and it compiles exactly the CSS they need, in-process and npm-free: oklch theme palettes, custom variants, arbitrary [values], and tailwind-style conflict resolution. Its docs are the compiler documenting itself.

Notable Pennington use
A custom IContentService reflects over the engine's own documentation model to publish 169 utility-reference pages — and each one compiles its example CSS live, through a real CssFramework instance, at render time.
Custom IContentServiceSelf-documentingoklch theme palettes:symbol code fencesSplit llms.txt subtree
Visit site

Spectre.Console

spectreconsole.net
spectreconsole.net
Screenshot of Spectre.Console

Documentation for Spectre.Console, the library for rich cross-platform .NET console apps — tables, trees, prompts, live progress, and markup. The site skips the packaged template and is built straight on AddPennington: one bespoke Blazor host wiring three markdown sources, each with its own front-matter type. It is the deepest custom integration here — nearly every Pennington seam, exercised at once.

Notable Pennington use
A single widget page fuses three features at once — a VCR#-recorded terminal SVG, source pulled live from a sibling project through a :symbol fence, and a reflection-generated API table rendered by an embedded Mdazor component.
Raw AddPennington host:symbol source linkingReflection API tablesMdazor componentsVCR# terminal SVGs
Visit site

Pennington

usepennington.net
usepennington.net
Screenshot of Pennington

Pennington's own documentation, generated by the pipeline it documents — markdown in, a fast static docs-and-blog site out, styled with MonorailCSS. The reference build: one DocSite host dogfooding tree-sitter source fences, a reflection-driven API reference, per-area PDF books, and a hand-tuned grape OKLCH palette.

Notable Pennington use
Code samples are never pasted. :symbol fences embed real source by name-path at build time — 212 of them across 68 pages, resolved against the repo root — so every quoted snippet stays in lockstep with the file it came from.
DocSite template:symbol code fencesReflection API referencePer-area PDF booksCtrl-K search
Visit site

Ashcroft

usepennington.github.io/ashcroft
usepennington.github.io/ashcroft
Screenshot of Ashcroft

Ashcroft generates Open Graph images, X cards, and blog headers from a small C# API: set a background, describe the content, pin it to one of nine anchors, save. SkiaSharp draws it and HarfBuzz shapes every string — real kerning, honest wrapping, shrink-to-fit before ellipsis, emoji and CJK fallback — with an automatic legibility scrim behind text over photos.

Notable Pennington use
Nothing on the docs page is a screenshot. Each example shows its C# source through a :symbol fence, while the image beside it is rendered by running that exact method through a /samples/{id}.png endpoint wired into Pennington's content discovery — even the page's own og:image.
csharp:symbol sourceCustom IContentServiceSelf-rendered og:imageSkiaSharp + HarfBuzzCode shown == code run
Visit site

VCR#

phil-scott-78.github.io/vcr
phil-scott-78.github.io/vcr
Screenshot of VCR#

A browserless .NET terminal recorder: it turns .tape scripts into SVGs, GIFs, and videos by driving a real shell over an in-process pseudo-terminal and rendering frames with a from-scratch VT500 engine — no ttyd, no Chromium, and SVG output needs no external binaries at all. The docs are a near-stock DocSite that earn their polish by dogfooding the tool: every embedded recording is an SVG VCR# made from its own sample tapes.

Notable Pennington use
The whole site is essentially one AddDocSite call — but it slots in a custom ICodeHighlighter at priority 60, above the built-in TextMate highlighter and below shell, to syntax-color the .tape language with a hand-written TextMate grammar.
One AddDocSite callCustom tape highlighterVcrTape componentSelf-rendered SVG demosDiataxis four areas
Visit site

Thirty25

thirty25.blog
thirty25.blog
Screenshot of Thirty25

Phil Scott's personal dev blog, and the gallery's lone BlogSite — a single AddBlogSite() call that wires the homepage hero, a project list, and social links, plus RSS, a sitemap, and tag browsing. Posts are dated Markdown carrying tags, series, and a repository link in front matter.

Notable Pennington use
It hands Pennington's SocialCardOptions.Render hook a SkiaSharp + HarfBuzz canvas, minting a 1200x630 OpenGraph card for every post — title, description, and date drawn over a gradient-faded background image.
AddBlogSite templateSkiaSharp social cardsCustom GBNF highlighter:symbol from projectsRSS + tags + series
Visit site

Building something with Pennington? Add your site.