Production infrastructure for AI agents
Website · Documentation · Guides · Core · Template · Discord
systemprompt-generator
Static site generation, theme rendering, and asset bundling for systemprompt.io AI governance dashboards. Coordinates domain services to generate prerendered HTML pages, sitemaps, RSS feeds, and optimized assets via a Handlebars and Markdown pipeline.
Layer: App — orchestrates domain modules. Part of the systemprompt-core workspace.
Overview
Part of the App layer in the systemprompt.io architecture. Integrations · Extensible Architecture
This application-layer crate orchestrates the full content publishing pipeline:
- Content Ingestion - Fetches and processes content from sources
- Prerendering - Generates static HTML for all content pages
- Asset Organization - Copies and organizes CSS, JS, fonts, and images
- Feed Generation - Creates sitemaps and RSS feeds for SEO
Architecture
src/
├── lib.rs # Public API exports and crate-level docs
├── api.rs # HTTP API content fetching
├── assets.rs # Dist asset organisation (organize_dist_assets)
│
├── build/ # Web build orchestration
│ ├── mod.rs # Module exports
│ ├── orchestrator.rs # BuildOrchestrator, BuildMode, BuildError
│ ├── steps.rs # CSS build steps
│ └── validation.rs # Sitemap URL validation
│
├── content/ # Content processing
│ ├── mod.rs # Module exports
│ ├── markdown.rs # Markdown rendering, frontmatter extraction
│ └── toc.rs # Table of contents extraction and heading IDs
│
├── error/ # Typed errors
│ ├── mod.rs # PublishError, GeneratorResult
│ └── suggestions.rs # Human-readable error-suggestion strings
│
├── jobs/ # Scheduled job definitions
│ ├── mod.rs # Module exports
│ ├── copy_assets.rs # execute_copy_extension_assets entry point
│ ├── content_prerender.rs # ContentPrerenderJob
│ └── page_prerender.rs # PagePrerenderJob
│
├── prerender/ # Static page generation
│ ├── mod.rs # Module exports
│ ├── engine.rs # prerender_content, prerender_pages entry points
│ ├── context.rs # PrerenderContext
│ ├── content.rs # Source processing, item rendering
│ ├── fetch.rs # Database content fetching with retries
│ ├── list.rs # Listing / index page rendering
│ ├── render.rs # Per-item render orchestration
│ └── utils.rs # Shared prerender helpers
│
├── rss/ # RSS feed generation
│ ├── mod.rs # Module exports
│ ├── generator.rs # generate_feed / generate_feed_with_providers
│ ├── default_provider.rs # DefaultRssFeedProvider
│ └── xml.rs # RssChannel, RssItem, XML building
│
├── sitemap/ # Sitemap generation
│ ├── mod.rs # Module exports
│ ├── generator.rs # generate_sitemap entry point
│ ├── default_provider.rs # DefaultSitemapProvider
│ └── xml.rs # SitemapUrl, build_sitemap_xml, build_sitemap_index
│
└── templates/ # Template configuration loading
├── mod.rs # Module exports
└── engine.rs # load_web_config, get_templates_path
Module Descriptions
| Module | Purpose |
|---|---|
build |
Orchestrates the web build with progress reporting and CSS organisation |
content |
Markdown rendering, frontmatter extraction, and TOC generation |
error |
Typed PublishError and GeneratorResult returned across the public API |
jobs |
Scheduled jobs registered with the systemprompt scheduler via inventory |
prerender |
Static HTML generation for content sources and registered page prerenderers |
rss |
RSS 2.0 feed generation with a default feed provider |
sitemap |
XML sitemap generation with chunking and a default sitemap provider |
templates |
Template-path resolution and WebConfig loading |
Key Types
| Type | Description |
|---|---|
BuildOrchestrator |
Coordinates CSS organisation and sitemap validation with progress reporting |
BuildMode |
Build-configuration variants |
BuildError |
Typed errors emitted by the build orchestrator |
PublishError / GeneratorResult |
Public error and result alias for every entry point |
PagePrerenderResult |
Outcome of a single page-prerenderer invocation |
ContentPrerenderJob / PagePrerenderJob |
Scheduler jobs for content and page prerendering |
SitemapUrl / DefaultSitemapProvider |
Sitemap entries and default provider |
RssChannel / RssItem / GeneratedFeed / DefaultRssFeedProvider |
RSS feed types and default provider |
Usage
[]
= "0.9.0"
Public Exports
pub use organize_dist_assets;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use load_web_config;
pub use ;
Dependencies
| Crate | Purpose |
|---|---|
systemprompt-database |
Database connection pool |
systemprompt-content |
Content repository and models |
systemprompt-templates |
Template registry and rendering |
systemprompt-models |
Configuration and domain types |
systemprompt-identifiers |
Typed identifiers (SourceId, ContentId) |
systemprompt-traits |
Job trait interface |
systemprompt-extension |
Extension discovery and assets |
systemprompt-files |
File storage configuration |
handlebars |
Template engine |
comrak |
Markdown to HTML |
Architecture Notes
This crate follows the application layer pattern:
- Orchestration only - No business logic; delegates to domain services
- Read-only domain access - Uses
ContentRepositoryfor data fetching - Job interface - Jobs implement
systemprompt_traits::Jobfor scheduling - Template delegation - Uses
TemplateRegistryfrom domain layer - Config via models - Uses
Config::get()instead of directenv::var()
License
BSL-1.1 (Business Source License). Source-available for evaluation, testing, and non-production use. Production use requires a commercial license. Each version converts to Apache 2.0 four years after publication. See LICENSE.
systemprompt.io · Documentation · Guides · Live Demo · Template · crates.io · docs.rs · Discord
App layer · Own how your organization uses AI.