Documentation
ΒΆ
Overview ΒΆ
SCOPE:core - DO NOT REMOVE - Module root package. Package gogogofullstacktemplate is the module root.
This file exists so the module root package is never empty: some Go toolchains treat an empty root package as a hard "no Go files" error when running `go test ./...`, which aborts the whole test gate. With this file present the root reports "[no test files]" instead.
The package name intentionally has no underscore: golangci-lint's revive linter rejects underscore-separated package names, and the module import path (github.com/calionauta/gogogo) is independent of the package name, so renaming is safe.
Directories
ΒΆ
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
check-scope
command
SCOPE:core - DO NOT REMOVE - SCOPE annotation linter (pre-commit gate).
|
SCOPE:core - DO NOT REMOVE - SCOPE annotation linter (pre-commit gate). |
|
check-skill-frontmatter
command
SCOPE:layer=infra,removal=core β SKILL.md frontmatter linter (pre-commit + CI gate).
|
SCOPE:layer=infra,removal=core β SKILL.md frontmatter linter (pre-commit + CI gate). |
|
desktop
command
Command desktop builds the Wails v3 native app shell around the exact same Go backend the web app uses (PocketBase + goqite queue + router + handlers).
|
Command desktop builds the Wails v3 native app shell around the exact same Go backend the web app uses (PocketBase + goqite queue + router + handlers). |
|
gogogo
command
Command gogogo scaffolds a new project from gogogo.
|
Command gogogo scaffolds a new project from gogogo. |
|
gui
command
SCOPE:layer=feature,removal=feature β gogpu/ui native window over the existing backend
|
SCOPE:layer=feature,removal=feature β gogpu/ui native window over the existing backend |
|
web
command
SCOPE:layer=infra,removal=plugin β GoAkt lifecycle (room actor system)
|
SCOPE:layer=infra,removal=plugin β GoAkt lifecycle (room actor system) |
|
SCOPE:core - DO NOT REMOVE - Server configuration (env vars, secrets).
|
SCOPE:core - DO NOT REMOVE - Server configuration (env vars, secrets). |
|
SCOPE:plugin - REMOVE if you don't need idempotent offline replay.
|
SCOPE:plugin - REMOVE if you don't need idempotent offline replay. |
|
features
|
|
|
app
SCOPE:layer=feature,removal=core β AppContext (cross-cutting deps bundle) Package app provides the cross-cutting "application core" pattern for projects built on top of gogogo.
|
SCOPE:layer=feature,removal=core β AppContext (cross-cutting deps bundle) Package app provides the cross-cutting "application core" pattern for projects built on top of gogogo. |
|
auth
SCOPE:layer=feature,removal=core β Auth middleware (cookie + login/logout) Package auth implements a single-user demo login on top of PocketBase's built-in auth API.
|
SCOPE:layer=feature,removal=core β Auth middleware (cookie + login/logout) Package auth implements a single-user demo login on top of PocketBase's built-in auth API. |
|
config
SCOPE:layer=feature,removal=feature β Auth-gated read-only /config view (masked secrets)
|
SCOPE:layer=feature,removal=feature β Auth-gated read-only /config view (masked secrets) |
|
credits
SCOPE:layer=feature,removal=plugin β the credits Service implements the llm.Biller seam so every Chat/ChatStream call (the internal/llm choke point) is metered.
|
SCOPE:layer=feature,removal=plugin β the credits Service implements the llm.Biller seam so every Chat/ChatStream call (the internal/llm choke point) is metered. |
|
genui
SCOPE:layer=feature,removal=feature β gogen-ui component catalog.
|
SCOPE:layer=feature,removal=feature β gogen-ui component catalog. |
|
landing
SCOPE:layer=feature,removal=feature β Public marketing landing page (GET /)
|
SCOPE:layer=feature,removal=feature β Public marketing landing page (GET /) |
|
notes
SCOPE:layer=feature,removal=feature β Shared notes (server-owned Loro Text) Embedded static assets for the notes feature: notes.js (textarea op wiring + SSE stream).
|
SCOPE:layer=feature,removal=feature β Shared notes (server-owned Loro Text) Embedded static assets for the notes feature: notes.js (textarea op wiring + SSE stream). |
|
room
SCOPE:layer=feature,removal=feature β Room presence demo (GoAkt grains)
|
SCOPE:layer=feature,removal=feature β Room presence demo (GoAkt grains) |
|
sounds
templ: version: v0.3.1020
|
templ: version: v0.3.1020 |
|
store
SCOPE:layer=infra,removal=core β EntityStore interface (the contract every storage
|
SCOPE:layer=infra,removal=core β EntityStore interface (the contract every storage |
|
store/crdtstore
SCOPE:layer=infra,removal=plugin β Loro CRDT-backed EntityStore strategy for todos
|
SCOPE:layer=infra,removal=plugin β Loro CRDT-backed EntityStore strategy for todos |
|
store/pbstore
SCOPE:layer=infra,removal=core β REMOVE if you don't need PocketBase-backed storage
|
SCOPE:layer=infra,removal=core β REMOVE if you don't need PocketBase-backed storage |
|
todo
SCOPE:layer=feature,removal=feature β Todo MVC example (reference implementation) To remove: delete features/todo/ and the todo block in router/router.go Init().
|
SCOPE:layer=feature,removal=feature β Todo MVC example (reference implementation) To remove: delete features/todo/ and the todo block in router/router.go Init(). |
|
todo/components
templ: version: v0.3.1020
|
templ: version: v0.3.1020 |
|
todo/handlers
SCOPE:layer=feature,removal=feature β Todo HTTP failure helper (log + plain response)
|
SCOPE:layer=feature,removal=feature β Todo HTTP failure helper (log + plain response) |
|
whiteboard
SCOPE:layer=feature,removal=feature β Collaborative whiteboard (Loro CRDT canvas) Embedded static assets for the whiteboard feature: rough.min.js (Rough.js hand-drawn canvas rendering) and whiteboard.js (Datastar/SSE canvas wiring).
|
SCOPE:layer=feature,removal=feature β Collaborative whiteboard (Loro CRDT canvas) Embedded static assets for the whiteboard feature: rough.min.js (Rough.js hand-drawn canvas rendering) and whiteboard.js (Datastar/SSE canvas wiring). |
|
internal
|
|
|
capabilities
SCOPE:layer=infra,removal=plugin β Capability registry: single source of truth for ids, kinds, runtime switches, and owned paths (consumed by cmd/gogogo, docs, and --help).
|
SCOPE:layer=infra,removal=plugin β Capability registry: single source of truth for ids, kinds, runtime switches, and owned paths (consumed by cmd/gogogo, docs, and --help). |
|
collab
SCOPE:layer=infra,removal=plugin β Loro CRDT + DocStore + sync workers + presence To remove: delete internal/collab/ + features/whiteboard/ + router/whiteboard.go + router/collab_jetstream.go.
|
SCOPE:layer=infra,removal=plugin β Loro CRDT + DocStore + sync workers + presence To remove: delete internal/collab/ + features/whiteboard/ + router/whiteboard.go + router/collab_jetstream.go. |
|
components
templ: version: v0.3.1020
|
templ: version: v0.3.1020 |
|
dagnats
SCOPE:layer=infra,removal=plugin β DagNats durable workflow engine To remove: delete internal/dagnats/, cmd/web/dagnats.go, router/onboarding_dagnats.go and dagnats_proxy_dagnats.go.
|
SCOPE:layer=infra,removal=plugin β DagNats durable workflow engine To remove: delete internal/dagnats/, cmd/web/dagnats.go, router/onboarding_dagnats.go and dagnats_proxy_dagnats.go. |
|
datastar
SCOPE:layer=infra,removal=core β Datastar rendering helpers (RenderAndPatch, MergeSignals)
|
SCOPE:layer=infra,removal=core β Datastar rendering helpers (RenderAndPatch, MergeSignals) |
|
genui
SCOPE:layer=infra,removal=plugin β AG-UI-compatible event envelope for AI streams Package genui speaks the AG-UI wire format (ag-ui-protocol/ag-ui) for the event subset gogogo emits, without the external SDK: the community Go SDK covers encode/decode/client, but vendoring it buys version churn for ~10 string constants β the envelope below is byte-compatible by test (see TestDecodeReadsReferenceSDKOutput) and travels the existing SSE Hub, so there is no new transport and no new dependency.
|
SCOPE:layer=infra,removal=plugin β AG-UI-compatible event envelope for AI streams Package genui speaks the AG-UI wire format (ag-ui-protocol/ag-ui) for the event subset gogogo emits, without the external SDK: the community Go SDK covers encode/decode/client, but vendoring it buys version churn for ~10 string constants β the envelope below is byte-compatible by test (see TestDecodeReadsReferenceSDKOutput) and travels the existing SSE Hub, so there is no new transport and no new dependency. |
|
goakt
SCOPE:layer=infra,removal=plugin β GoAkt entity actors (room authority demo)
|
SCOPE:layer=infra,removal=plugin β GoAkt entity actors (room authority demo) |
|
installer
SCOPE:layer=infra,removal=plugin β installer engine: add units to existing checkouts (copy, rewire, prove)
|
SCOPE:layer=infra,removal=plugin β installer engine: add units to existing checkouts (copy, rewire, prove) |
|
llm
SCOPE:layer=infra,removal=plugin β GoAI LLM client (used by Suggest) To remove: delete internal/llm/ + features/todo/handlers/llm_suggest.go.
|
SCOPE:layer=infra,removal=plugin β GoAI LLM client (used by Suggest) To remove: delete internal/llm/ + features/todo/handlers/llm_suggest.go. |
|
llm/fakeserver
SCOPE:layer=infra,removal=plugin β GoAI LLM client (used by Suggest) Package fakeserver provides an httptest-compatible OpenAI Chat Completions fake for end-to-end tests of the GoAI integration without burning real tokens.
|
SCOPE:layer=infra,removal=plugin β GoAI LLM client (used by Suggest) Package fakeserver provides an httptest-compatible OpenAI Chat Completions fake for end-to-end tests of the GoAI integration without burning real tokens. |
|
nats
SCOPE:layer=infra,removal=plugin β Enables cross-instance Leaf Node replicates, server consumer writes to server PocketBase).
|
SCOPE:layer=infra,removal=plugin β Enables cross-instance Leaf Node replicates, server consumer writes to server PocketBase). |
|
queue
SCOPE:layer=infra,removal=core β Job queue (goqite) + Worker Pool Package queue implements the background job subsystem: a goqite-backed SQLite queue, an SSE hub for streaming progress to the browser, and a worker pool that dispatches messages through a typed HandlerRegistry.
|
SCOPE:layer=infra,removal=core β Job queue (goqite) + Worker Pool Package queue implements the background job subsystem: a goqite-backed SQLite queue, an SSE hub for streaming progress to the browser, and a worker pool that dispatches messages through a typed HandlerRegistry. |
|
routeutil
SCOPE:layer=infra,removal=core β shared routing helper.
|
SCOPE:layer=infra,removal=core β shared routing helper. |
|
secrets
SCOPE:layer=infra,removal=core β Secret management with age (age-encryption.org) Package secrets decrypts a per-project environment file using age (https://age-encryption.org).
|
SCOPE:layer=infra,removal=core β Secret management with age (age-encryption.org) Package secrets decrypts a per-project environment file using age (https://age-encryption.org). |
|
server
SCOPE:layer=infra,removal=core β Server bootstrap (PocketBase, queue, router) Package server wires the binary's startup sequence shared by every frontend target (web, desktop, future mobile): PocketBase, the goqite queue, the todo handlers, and the HTTP routes.
|
SCOPE:layer=infra,removal=core β Server bootstrap (PocketBase, queue, router) Package server wires the binary's startup sequence shared by every frontend target (web, desktop, future mobile): PocketBase, the goqite queue, the todo handlers, and the HTTP routes. |
|
SCOPE:core - /api discovery handler.
|
SCOPE:core - /api discovery handler. |
|
scripts
|
|
|
agehelper
command
Command agehelper is a tiny stand-in for the `age` / `age-keygen` CLIs, used by bin/init-secrets when neither binary is installed.
|
Command agehelper is a tiny stand-in for the `age` / `age-keygen` CLIs, used by bin/init-secrets when neither binary is installed. |
|
web
|
|
|
resources
SCOPE:core - DO NOT REMOVE - Embedded static assets (CSS, JS, etc.).
|
SCOPE:core - DO NOT REMOVE - Embedded static assets (CSS, JS, etc.). |
|
skins
templ: version: v0.3.1020
|
templ: version: v0.3.1020 |
|
skins/basecoat
Package basecoat implements the BasecoatUI (shadcn) skin.
|
Package basecoat implements the BasecoatUI (shadcn) skin. |
|
skins/daisyui
Package daisyui implements the default DaisyUI skin.
|
Package daisyui implements the default DaisyUI skin. |
Click to show internal directories.
Click to hide internal directories.