There's a temptation, when you build a web framework, to ship a thin marketing page and call it a day. We did the opposite: this website is a full Umbral project, and the important sections prove the framework rather than describe it.
Apps, not a monolith
The site is scaffolded with umbral startapp into focused plugin crates, each owning its own models and migrations:
umbral_website/plugins/
site_content/ # blog, pages, FAQ, navigation, contact messages
features/ # the framework feature catalog
plugin_directory/ # community + official plugins, comments, submissions
reviews/ # developer reviews of the framework
showcase/ # sites built with Umbral
security_reports/ # malicious-plugin reporting + advisories
community/ # social links + newsletter config
public/ # the landing page
main.rs stays small. It wires settings, plugins, routes, and startup — and contains no website data models. Every model lives in its app's models.rs.
Everything is database-backed
The homepage stat strip, the plugin cards, the reviews, the discussion notes — all live. When the database is empty, the page renders an honest em-dash (—) or an empty state, never a fabricated 0 or a made-up testimonial.
// The homepage's curated reviews — pulled live, featured first.
let reviews = featured_reviews.await.unwrap_or_default;
Forms are real forms
Contact, plugin submission, plugin reports, plugin comments, and reviews all use Umbral Forms: server-side validation, friendly errors, and a clear moderation state where it matters. Submitted content doesn't appear publicly until it's approved.
The admin maintains it
Maintainers manage features, plugins, comments, blog posts, social links, reviews, showcase entries, and security reports from the admin — without touching templates. The dashboard widgets read straight from the directory data.
Real-time, where it helps
Post a note on a plugin page and other readers see a live banner over SSE — no refresh. The comment data model is designed so a future SSE/WebSocket layer can stream replies and moderation changes without a redesign.
Building the site this way kept us honest. Every rough edge in the framework showed up immediately, because we were the first serious user.