Home / Devlog / Forge v1.0.0 — what shipped

Forge v1.0.0 — what shipped

release v1 changelog

Forge v1.0.0 shipped in March 2026 after nine milestones of development. Here is what is in it.

Core

Every content type embeds forge.Node — a struct that carries UUID identity, a URL slug, and the full content lifecycle. The lifecycle is always enforced. Non-published content never appears on public endpoints, sitemaps, feeds, or AI indexes. This is not configurable. It is the point.

type Post struct {
    forge.Node
    Title string `forge:"required,min=3"`
    Body  string `forge:"required"`
    Tags  []string
}

What a module gives you

Register a content type as a module and Forge wires the following automatically:

  • GET /posts — list of published items (JSON, HTML, or Markdown)
  • GET /posts/{slug} — single item with content negotiation
  • POST /posts — create (requires Author role or above)
  • PUT /posts/{slug} — update and publish (lifecycle enforced)
  • DELETE /posts/{slug} — delete (requires Editor role or above)
  • GET /posts/feed.xml — RSS 2.0 feed
  • GET /posts/{slug}/aidoc — token-efficient AI format
  • Entry in /llms.txt and /llms-full.txt
  • Entry in /sitemap.xml

SEO and metadata

Implement Head() forge.Head on your content type and Forge generates the full <head> block: title, meta description, canonical URL, Open Graph, Twitter Card, breadcrumb JSON-LD, and robots directives for non-published content.

Storage

forge.SQLRepo[T] provides a production-ready repository backed by any *sql.DB. Switch from SQLite to PostgreSQL by changing one line — the application code does not change.

Zero dependencies

The forge core package has zero third-party dependencies. One go get, one binary, one database file.

What is next

Milestone 10 is MCP support — exposing Forge modules as typed MCP tools so AI assistants can create, update, and publish content directly. After that, Phase 2 focuses on the production foundation: shared template partials, native analytics, webhooks, and forge-admin.