Docs · v0.96.0

Read by what you're trying to do.

The docs are grouped by intent. Pick the one that matches the question you're holding.

122 docs · 8 intents

Start here

What GoFastr is, how a project is laid out, and a map of every feature, the newcomer narrative before the per-feature references.

Modeling your domain

Declare entities, fields, relations. The framework generates schema, CRUD, validators, and code.

Serving HTTP

Routes, middleware, sessions, auth, idempotency, security headers: everything between the wire and your handler.

Building UI

Start from a product job, then choose the state boundary, server-rendered islands, primitives, runtime, and theme.

UI capability map

Live dashboards, optimistic boards, master/detail, reactive state, static export, and SPA integration, mapped to proof and delivery semantics.

Live dashboards

Compose SSE island push, store.Computed, a bounded feed, and the connection-health banner, and the boundaries that decide when each is the right shape.

Getting started (UI)

The path: scaffold → theme → screen → custom component.

Composition recipes

Choose a page shape before composing framework-owned primitives.

Wiring UI into an app

framework.App + core-ui app + uihost, end to end in one annotated main.go.

Entity screens

framework/entityui: list, record, and create screens drawn from the entity's Display and States, with query-param state.

Screens and layouts

Layout chains: nesting with ScreenGroup, per-layer markers, deepest-shared-layer swaps, prefetch, scroll restore.

New components

The minimal-register + SSR-inline + hydrate contract.

Headless components

Structure, roles and hooks with no classes: parts, class maps, slots, binds, islands, and the harness that pins them.

Theming

The token catalog, dark mode, ui.Themed, and the --ui-* override vars.

Widget builder

Build islands that hydrate against a registered handler.

Forms

Server-validated forms with island-swapped error states.

Image pipeline

Pure-Go resize + WebP lossless encode.

Runtime modules

Carved per-feature so pages without X don't ship X's JS.

Print documents

Server-rendered print-friendly documents + PDF.

Dev livereload

SSE-driven reload while you edit. Zero config.

Static-site export

Render the whole app to static HTML + assets for apex or project-path hosting.

Site search

Full-text search over every rendered page: live from the server, or from index files in a static export.

PWA

uihost.WithPWA: installable manifest, versioned offline shell, and a safe service worker.

Desktop host

Experimental: run the app in the OS WebView from a CGO_ENABLED=0 binary, with a typed JS bridge to native capabilities (macOS today).

Application hosts

App.Run with a Host: the one lifecycle engine behind Start and Serve, ServicesHost for an App with no transport, ServicesReady, and the rules a native host follows.

Local apps

framework/localapp: the data directory a one-person app keeps on its own device (SQLite DB, session secret, owner identity), shared by the desktop, service and mobile hosts.

OS service host

Experimental: install the app binary as a per-user launchd, systemd or Task Scheduler service and sign the browser in to its loopback UI.

SEO

Meta tags, Open Graph, JSON-LD, sitemap, robots, and the one-image icon surface.

Accessibility

Built-in ARIA guarantees, the guided audit command, and the build gate.

Porting an existing frontend

The escape hatch for a foreign DOM contract: html/template screens + static.Mount, deliberately unsupported.

Strict mode

WithStrict: missing SEO and missing per-screen axe tests fail boot instead of shipping.

Reactivity model

The four-rung ladder of client signals, RPC, polling, and SSE push, plus the stateless-interactive-layer contract.

Interactive patterns

The data-cui-* vocabulary: RPC islands, signals, open-widget, optimistic actions, polling.

Optimistic UI

The mutation lifecycle, rollback vs authoritative refresh, and seven composed recipes: toggle, inline edit, create, delete, kanban, group mutex, and slow/failure.

Pane host

Master-detail split-pane layout that collapses to an overlay drawer on narrow screens.

Embeddable surfaces

Hand a screen to a website you don't control: single-use handshake nonce, exact origin allowlist, a frame runtime with no SPA navigation.

Plugin platform

Host third-party JS plugins in a sandboxed opaque-origin iframe with a capability-gated postMessage protocol.

Process modules

Third-party modules as isolated child processes: crash/upgrade/revoke without touching the host, capability-brokered data, sandbox trust tiers.

Runtime contract

The SSR/hydration/island/SSE model and the full data-cui-* attribute reference.

Signal store

Typed, namespaced client state that fans out to many consumers from one declaration.

Background compute

Registered Web Workers + WASM modules, content-addressed and CSP-safe, off the main thread.

Browser-local databases

IndexedDB databases declared in Go: records in the visitor's browser, ordered lists, transactions, and change events across tabs.

Local entities

Forms and lists over records saved in the visitor's browser, from Go and design-system components; no server table, no app JavaScript.

Persisting & migrating

SQLite and Postgres, dialect-aware, with the migration CLI and per-test isolation.

Working with agents

MCP tools, Kiln build mode (experimental), agent permissions, plan-gated destructive ops.

Agent-readiness

Discovery surface scanners (isitagentready.com) look for: llms.txt, A2A card, MCP/OAuth well-knowns, markdown negotiation.

MCP server

The core/mcp reference: JSON-RPC methods, registering tools, resources, templates, and prompts, per-caller gates, and cursor pagination.

Local run registry

Every running App writes a 0600 record of its URL and MCP entry; framework/localrun lists the live ones, pruning dead pids.

A2A task exchange

WithA2A mounts the Agent2Agent v1.0 exchange at /a2a: deterministic named skills, entity skills over MCP tools, tasks, streaming, and push.

Contracts

gofastr verify: one pipeline of rules with IDs, reasons, and fixes, plus semantic coverage and machine-readable diagnostics.

Kiln overview

Experimental: the agent-driven build-mode binary.

ACP server

core/acp speaks the Agent Client Protocol v1: sessions, streamed updates, permissioned tool calls.

WebMCP bridge

Experimental: expose server-declared tools to in-browser agents via the page's modelContext.

Agent host

The chat-host surface contract: RoleAgent, widget authoring with the document builder, and consuming host theme signals instead of shipping a palette.

Web Bot Auth

Publish your signing JWKS, and (experimental) verify RFC 9421 signatures on inbound agent traffic against draft-meunier-webbotauth-httpsig-protocol-02.

Generative UI

The position: models compose the design system, never emit markup or CSS; what that means per surface.

Semantic search

Local semantic search via brute-force cosine. No API key.

Audit deps

Detect packages an agent shouldn't import.

App specs

Reusable bundles of entities + screens an agent can apply.

Operations

Run it in production. Logging, metrics, feature flags, env, i18n.

Reference & internals

Performance numbers and the deeper design + tooling docs, surfaced so nothing is hidden.

Every doc · A–Z

The complete embedded reference: every page, alphabetical, featured or not. It is the same content as `gofastr docs`.

A2A task exchangeAccess controlAccessibility: built-in guarantees, the audit command, the build gateACP: Agent Client Protocol serverAdmin UIAgent hostAgent-readinessAnalytics recipesAPI prefix & versioningShip your API as a CLIApp specsApplication hosts: who serves the AppAuditing init-time global registrationsAudit logAuthenticationBackend capability mapBackups and restoreBatch endpointsBenchmarksCacheThe gofastr CLICodegenComparison: where GoFastr sitsBackground compute with Web Workers and WebAssemblyContracts: `gofastr verify`Core packagesCron / scheduled jobsCursor paginationData export & importDeploymentDesktop host (experimental)Dev-mode livereload.env filesEmailEmbeddable surfacesCustom endpointsEntity declarationsEntity screens (entityui)Entity events & SSEFactories / fixturesFeature flagsFirst-run setupForm moduleGenerative UIGoFastr harness architectureHarness end-to-end testingHealth and readinessHooks & transactionsInternationalizationIdempotency keysImage pipelineIncludes & eager loadingInteractive patternsWorktree isolationKiln: agent-driven build modeScreens, layouts, outlets, and the layout chainLive dashboardsLocal apps: one person, one deviceLocal entitiesLocal run registryBrowser-local databases (localdb)Server logs (`battery/log`)MCP serverMigrationsModulesMulti-tenant scopingUnified notificationsObservability (metrics & tracing)Optimistic UI: mutations, rollback, and reconciliationOverviewPane-host: primary pane + openable side panesPerformance resultsHeavy-JS plugin platform (`framework/pluginhost`)PluginsPorting an app with an existing frontendLive presencePrintable documentsProcess modulesProject structurePWA: installable app + offline shellQuery DSLJob queue (`battery/queue`)Rate limitingReactivity modelFirst-party relayWhat changed in v0.86.0What changed in v0.87.0WebRTC roomsRuntime contract: SSR, hydration, islands, and the `data-cui-*` referenceRuntime JS and CSS minificationHorizontal scalingShip your API as SDKsSearchSecurity defaultsSemantic searchSEO: meta tags, Open Graph, JSON-LD, sitemap, robots, iconsOS service host (experimental)Project settingsSignal store (shared client state)Site searchThe SQLite driver GoFastr shipsAPI stability and upgrade policyStatesStatic-site exportStorageStrict mode: launch hygiene as boot failuresTestkit: isolated Postgres helpers for integration testsThemingTutorial: one app spec → UI + API you ownUI capability mapUI composition recipesUI getting startedHeadless componentsUI components indexUI wiring: adding the UI system to a framework.AppUnmounting a packageUpgrading: move an app to a newer GoFastr releaseFile uploadsWeb Bot Auth (experimental)Outbound webhooksWebMCP bridge (experimental)Widgets: `core-ui/widget`