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 at the same URL with .md appended. 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
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
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
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
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
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

Beck

usepennington.github.io/beck
Screenshot of Beck

Declarative, animated architecture diagrams from YAML — "Mermaid, but sexy." Describe a system in a few lines of YAML and Beck lays it out, routes the edges, themes itself from the host's CSS variables, and animates packets flowing through it. The docs are a bare AddPennington host that owns the entire chrome — a custom landing, a live playground, a hand-built sidebar — and dogfood the tool: every diagram is rendered live by Beck, wearing the site's MonorailCSS emerald palette and following its dark mode.

Notable Pennington use
The reference pages hand-maintain no token tables. A BeckGallery Mdazor component reflects over Beck's authoring enums and renders each value as a live beck fence, so the gallery tracks the schema automatically — and inherits the host palette and dark mode for free.
Raw AddPennington hostCustom Blazor chromeMdazor token gallery:symbol source fencesSelf-rendered diagrams
Visit site

Thirty25

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.