How Forge wires modules in three lines

Define a struct, embed forge.Node, call app.Content — Forge handles routing, storage, feeds, and AI indexing automatically.

The problem

Most Go web frameworks make you wire everything by hand: routes, repositories, feeds, sitemaps, structured data. With five content types you're copying boilerplate everywhere.

How Forge solves it

Embed forge.Node, define your fields, and call app.Content with a module:

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

app.Content(forge.NewModule((*Post)(nil),
    forge.At("/blog"),
    forge.Templates("templates/blog"),
    forge.Feed(forge.FeedConfig{Title: "My Blog"}),
))

That's it. List, show, RSS feed, sitemap entry, Open Graph tags — all wired from three option calls.

What you get for free

  • List at /blog with lifecycle filtering
  • Show at /blog/{slug}
  • RSS feed at /blog/feed.xml
  • Sitemap entry (add forge.SitemapConfig{})
  • AI index via /llms.txt (add forge.AIIndex(...))

No code generation. No reflection magic at runtime. Just a Go struct and a module.