Product Name
GOWDK
WDK does not have a canonical expansion. No one knows what it stands for; GOWDK just ships apps.
One-Line Description
GOWDK ships Go web apps through GOWDK Compiler plus GOWDK Runtime.
Product Layer Names
- GOWDK: the product name and repository wordmark.
- GOWDK Compiler: the
.gwdklanguage, parser, analyzer, component/page compiler, diagnostics, LSP, and generated adapter source. - GOWDK Runtime: the app/runtime layer for serving, routing, request context, form decoding, response envelopes, actions, APIs, CSRF, partial fragments, SSR contracts, embedded assets, and one-binary or split-binary wiring.
gowdk: the CLI that runs the compiler, produces build artifacts, and wires GOWDK Runtime output.
This keeps the Svelte/SvelteKit-style separation without saying GOWDK Kit,
because the K already carries the kit idea in the product wordmark. It does
not rename Go module paths or public runtime packages yet.
Use the names this way:
| Name | Product Meaning |
|---|---|
| GOWDK | Product name and wordmark. |
| GOWDK Compiler | Language/compiler layer. It owns .gwdk, AST/analyzer/IR, generated Go adapter source, build output, manifests, route metadata, asset metadata, diagnostics, formatting, and LSP. |
| GOWDK Runtime | Runtime/app layer. It owns runtime/, addons/, generated net/http serving, backend routing, form decoding, responses, actions, APIs, fragments, SSR hooks, embedded assets, contract runtime, and one-binary or split-binary wiring. |
gowdk | CLI and Go package/module spelling. The CLI drives both layers. |
Avoid treating GOWDK World, GOWDK Core, or GOWDK Framework as separate
public names. In docs, use compiler core, runtime core, or repository core
when core is unavoidable.
Product Shape
GOWDK grows as two coordinated parts:
GOWDK Compiler
component/page compiler
+
GOWDK Runtime
app/runtime layer
=
Go-first full web app
GOWDK Compiler owns package-peer .gwdk files, pages, layouts, components,
build-time output, CSS, islands, manifests, diagnostics, endpoint metadata, and
generated adapter source. GOWDK Runtime owns serving, routing, request context
helpers, form decoding, response envelopes, actions, APIs, CSRF, partial
fragments, SSR contracts, embedded assets, contract runtime, and one-binary or
split-binary wiring.
User application behavior stays in Go. Separate .go files remain the default
path today, and optional inline Go authoring in .gwdk is accepted as planned
surface only when it extracts to normal importable, testable Go package code.
GOWDK should improve Go web authoring through .gwdk compilation, GOWDK Runtime
contracts, and generated adapters before considering any custom Go compiler
work.
Execution Lanes
- Build-time page lane: full pages default to static SPA/prerender output.
- Backend endpoint lane: actions, APIs, and fragments run at request time without making the page itself request-rendered.
- Request-time page lane: pages with
load {}orgo ssr {}are compiled into generated SSR handlers and run through GOWDK Runtime.
SSR is integrated into the compiler/runtime code path and selected per page. The
current addons/ssr package and --ssr flag are feature gates for enabling
that lane in config and CLI flows; they are not a separate product layer.
Target Users
- Go developers building product applications who want build-time page output, typed backend behavior, and one-binary deployment.
- Small teams that want Go-first UI authoring without a large JavaScript application stack.
- Builders who want request-time page rendering only where request context, guards, sessions, or per-request data actually matter.
Problem
Modern web frameworks often force teams into one rendering ideology: full SSR,
full SPA, or deploy-only static output. GOWDK should let Go teams compile
portable .gwdk files into build-time pages, components, typed backend
endpoints, partial updates, request-time pages, and deployable Go binaries while
keeping the route, handler, and runtime contracts explicit.
Differentiation
- Files are portable: routes and layouts are declared in files, not implied by folder nesting.
- Full pages default to build-time SPA output.
- Actions, APIs, and fragments are request-time endpoint behavior, not page route kinds.
- Partial updates use server fragments instead of full-page request rendering.
- SSR is an integrated non-default request-time page lane selected per page.
- User behavior stays in Go; generated Go is adapter glue.
- Production can ship as one Go binary with embedded frontend assets and generated request-time handlers.
Success Metrics
- Developers can explain GOWDK in one sentence: GOWDK ships Go web apps through GOWDK Compiler plus GOWDK Runtime.
- The compiler can produce real build-time page output, route metadata, endpoint
metadata, CSS/assets, generated adapter Go, and deployable artifacts from
package-peer
.gwdkfiles. - Actions and APIs bind to exact exported Go handlers with typed form decoding, explicit request context, safe response envelopes, CSRF, and production-safe error handling.
- Request-time SSR pages can execute
load {}, guards, typed route params, request-aware layouts, redirects, and error boundaries through generated SSR handlers. - One-binary and split-binary deployments use the same route and endpoint metadata.
Constraints
- Language: Go-first compiler, runtime, and deployment.
- Behavior: domain logic, auth, validation, storage, and services stay in user Go packages.
- Generated code: generated Go is adapter glue, not generated application logic.
- Styling: CSS tooling is plugin-driven. Tailwind is optional, not core.
- JavaScript: generated JavaScript may enhance navigation, forms, fragments, and local UI state, but normal app contracts must not depend on user-written JavaScript.
- Rendering: full pages default to build-time SPA output; request-time page
rendering is explicit with
load {}orgo ssr {}. - Deployment: one-binary production deploy must work with and without request-time page rendering.
- Extensibility: actions, APIs, partials, SSR, embed, CSS plugins, framework adapters, and WASM islands should remain modular implementation boundaries around the same core metadata.