Skip to content

Architecture ​

Five diagrams of how gkm works. Each is a Figma frame exported at full width — click any of them to zoom.

The source is one Figma file, gkm Architecture, where every shape is a component: a database is a cylinder, a container has window chrome, a bucket is a vessel, a site is a browser window. Changing a shape once changes it in all five.

What a construct becomes ​

One declaration, the manifest it becomes, and what a target builds

A declaration on the left. The manifest — ids, kinds, and the edges between them — in the middle. On the right, what a target builds from it.

The boxes are labelled with the hostnames you would actually visit. The physical names underneath them are derived from the construct id and the stage, and that rule has its own page.

A surface is a server ​

One container serving two surfaces, against one server per surface

Api and Auth are both rest-api declarations. What separates them is the endpoint knowing which surface it belongs to — which is what an endpoint created from its surface gives you.

Where does this construct live? ​

Three layers of backend resolution, narrowing as they get more specific

A target-aware default, a per-concern override, and — not built yet — a per-construct one. A construct falls through until something answers, and the answer is always one of the same three backend names.

Same client, different address ​

Local and deployed topologies converging on one call site

Locally Caddy is the edge because nothing else is. On Dokploy, Traefik already is one. The client is identical; the scheme in the injected URL picks the driver.

One kind, three answers ​

Eight kinds and what each resolves to per target

Where a kind resolves to nothing on a target, that is marked rather than hidden.