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


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.
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.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.
:symbol fence, and a reflection-generated API table rendered by an embedded Mdazor component.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.
: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.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.
: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.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.
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.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.
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.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.
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.Building something with Pennington? Add your site.