Static site generator in Ada.
Let contracts bind. Let ranges guard. Let pages render.
-
Safety-conscious engineers who value compiler-proven correctness
-
Ada enthusiasts seeking modern web tooling in their language of choice
-
Systems programmers who want strong typing for their content pipelines
-
Documentation teams requiring mission-critical reliability
Ada brings unique strengths to static site generation:
| Feature | Benefit |
|---|---|
Strong Static Typing |
Content schemas enforced at compile time |
Contract-Based Design |
Pre/post conditions guard your build pipeline |
Range Types |
Invalid states become unrepresentable |
Tasking Model |
Parallel rendering with formal concurrency guarantees |
SPARK Subset |
Provably correct transformations where needed |
No null. No buffer overflows. No silent failures. The compiler proves it.
with Noteg.Site;
with Noteg.Markdown;
procedure Build is
Site : Noteg.Site.Instance := Noteg.Site.Create
(Source => "content/",
Output => "_site/");
begin
Site.Add_Processor (Noteg.Markdown.Processor);
Site.Build;
end Build; ┌─────────────┐
│ Watcher │ (filesystem events)
└──────┬──────┘
│
┌──────▼──────┐
│ Parser │ (content → AST)
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌──────▼──────┐ ┌───▼───┐ ┌──────▼──────┐
│ Markdown │ │ AsciiDoc │ │ Template │
└──────┬──────┘ └───┬───┘ └──────┬──────┘
│ │ │
└────────────┼────────────┘
│
┌──────▼──────┐
│ Renderer │ (AST → HTML)
└──────┬──────┘
│
┌──────▼──────┐
│ FileEmitter │ (write output)
└─────────────┘Each stage operates under Ada’s contract model—preconditions validate input, postconditions guarantee output.
-
Markdown & AsciiDoc - First-class support for technical documentation
-
Template Engine - Type-safe templating with compile-time validation
-
Incremental Builds - Only rebuild what changed
-
Live Reload - Development server with instant feedback
-
Asset Pipeline - CSS/JS processing with integrity verification
For those new to Ada’s safety model:
| Concept | Purpose |
|---|---|
|
Range types eliminate invalid values |
|
Preconditions enforce caller obligations |
|
Postconditions guarantee results |
|
Enable formal verification subset |
noteg-ssg integrates with the poly-ssg-mcp hub via MCP adapters written in ReScript.
Related projects:
-
poly-ssg-mcp - Unified MCP server for static site generators
-
poly-container-mcp - Container orchestration adapters
-
poly-iac-mcp - Infrastructure as code adapters
Dual-licensed under MIT and AGPL-3.0-or-later. See LICENSE.txt.