go cms framework

Forged
in the age of AI.

For AI enhanced developers and AI empowered users.
Forge is a content management framework for building blazing fast, SEO and AI-friendly websites with Go and zero dependencies.

Go 1.22+ · zero build step · SQLite → Postgres in one line

content modules

Define a struct, embed forge.Node, register a module. List, show, feed, sitemap, and AI index — all wired automatically.

AI-first output

Every module exposes /llms.txt, /llms-full.txt, and /aidoc — structured for LLM agents without extra configuration.

zero dependencies

No npm. No build step. No framework magic. One Go binary, one SQLite file, and a Caddyfile. Deployable on a €4 VPS.

SQLite → Postgres

Switch from forge.NewSQLRepo[*T](db) to forge-pgx without touching application code. Same interface, different driver.

structured SEO

Canonical URLs, Open Graph, Twitter Card, breadcrumb JSON-LD, and RSS feeds — declared once on the content type, rendered correctly everywhere.

lifecycle management

Draft → Scheduled → Published → Archived. Status is enforced by the framework — templates never filter by status manually.

draft

Private. Only authenticated admins can read.

scheduled

Queued for a future publish time.

published

Live. Included in feeds, sitemap, and AI index.

archived

Hidden from lists. Canonical URL still resolves.

main.go
package main

import (
	"github.com/forge-cms/forge"
	_ "modernc.org/sqlite"
)

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

func main() {
	app := forge.New(forge.MustConfig(forge.Config{
		BaseURL: "https://example.com",
		Secret:  []byte("change-me"),
	}))
	app.Content(forge.NewModule((*Post)(nil),
		forge.At("/blog"),
		forge.Templates("templates/blog"),
		forge.Feed(forge.FeedConfig{Title: "My Blog"}),
	))
	app.Run(":8080")
}
$ go get github.com/forge-cms/forge@latest
forge-cli — manage your Forge site from the terminal From templates to token safety — what shipped since shared partials Phase 2 begins — MustConfig, OGDefaults, AppSchema, and shared partials

all posts →