Context

Nest's @Controller/@Get/@Injectable exist to feed metadata to the container and router. With routes declared as a plain map and wiring done by imports, there is nothing for decorators to carry.

Decision

Handlers are plain functions in a routes map ((req, ctx) => Response). No route, param, or injection decorators; no decorator-metadata dependency at all.

Consequences

No Stage-3-vs-legacy decorator drift, no AST type-extraction spike, no polyfill. The route map is literal data the build can merge trivially. Cost: route declarations are a little less sugary than @Get("/:id") — a deliberate trade for zero machinery.

Patties design specifications · a design exploration · All decisions