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
/blogwith lifecycle filtering - Show at
/blog/{slug} - RSS feed at
/blog/feed.xml - Sitemap entry (add
forge.SitemapConfig{}) - AI index via
/llms.txt(addforge.AIIndex(...))
No code generation. No reflection magic at runtime. Just a Go struct and a module.