| audit trail, who-did-what, compliance log | app.WithAuditLog(cfg) (chained *App method) |
| admin pages, ops dashboard, queue browser | battery/admin |
| login, signup, session, CSRF, bcrypt, "require admin" | battery/auth |
| send notification, password reset link, fan-out across channels | battery/notify |
| background job, scheduled task, retry-on-failure | battery/queue (use DBQueue for real workloads) |
| send email, SMTP, transactional mail | battery/email |
| file upload, S3, MinIO, attachments | battery/storage + framework.WithFileStorage |
| full-text search | battery/search |
| outbound signed webhooks with retry | battery/webhook |
| cache key/value, memoize, "remember for N seconds" | battery/cache |
| UI components, page layout, forms, tables, theming, dark mode | framework/ui (~100 components) — gofastr docs ui-composition-recipes for page grammar, gofastr docs ui-new-components for the catalog, live demos at /components/<slug> on the docs site (examples/site) |
| structured request log, panic recovery, log MCP debug tools | battery/log |
browser refresh on gofastr dev rebuild | auto-wired if your main.go uses framework.NewApp + uihost.New — no host code; for custom bootstraps call dev.RegisterLiveReload(router) manually |
agent debugging under gofastr dev | auto-wired by framework.NewApp: /mcp mount + introspection (app_routes, framework_docs_search, …) + control (app_module_enable/disable) + battery/log debug tools — opt out with GOFASTR_DEV_MCP=0; production needs explicit WithMCP/WithMCPIntrospection/WithMCPControl |
load .env files | auto-wired by framework.NewApp — do nothing |
| per-test isolated Postgres DB | framework/testkit.NewIsolatedDB(t, adminDSN, migrate) |
| favicon, app icon, PWA icons | uihost.WithAppIcon(pngBytes) — one source image becomes 32/180/192/512 PNGs, /favicon.ico, head links, and the PWA manifest icons; generate placeholder art in code with framework/image.NewGradient (no committed binaries) |
| SEO: page title/description, Open Graph, Twitter cards, canonical, JSON-LD, sitemap, robots | uihost WithDescription/WithOpenGraph/WithSitemap/WithRobots/WithRobotsMeta + per-screen ScreenSEO/ScreenSchema interfaces — gofastr docs seo. Static export writes sitemap.xml/robots.txt from the same config |
| accessibility, ADA/WCAG compliance, "aria-label", a11y audit | gofastr audit a11y (static guided lint) and gofastr audit a11y --url <base> (axe-core in headless Chrome, both color schemes, pages from /sitemap.xml). Note gofastr build enforces the static lint — fix findings, don't reach for --no-a11y — gofastr docs accessibility |
| upgrading the framework version, migration notes between releases | install the target CLI first, then gofastr upgrade [--to vX.Y.Z] [--apply] — shows every migration-relevant change in range with file:line hits in your app — gofastr docs upgrading; finish with gofastr agents sync |
| customer-facing CLI, "ship a terminal client", stripe/gh-style CLI for my API | gofastr generate cli — standalone stdlib binary, scoped gfsk_ token auth, custom.go extension seam — gofastr docs app-cli |
| client SDKs, "publish an SDK", downloadable Go/JS/TS client, API docs site for customers | gofastr generate sdk (Go module zip + client.js/client.d.ts under gen/sdk/) + sdkdocs.Mount(site, app.Router(), sdkdocs.Config{Registry: app.Registry, Artifacts: os.DirFS("gen/sdk/dist")}) for the hosted docs site + downloads — gofastr docs sdk |