The ecosystem

The packages Genesis is built on, the rules that keep projects healthy, and how to stay current.

The layers

Genesis is the consumer of a maintained package ecosystem:

PackageLayerRole
@olwiba/cnPrimitivesAccessible, token-driven components and the design preset
@olwiba/uiBlocksApp shells, marketing sections, content layouts
@olwiba/dxToolingDev banner, build-time plugins, asset generation (devDependency)
@olwiba/docsDocumentationThe docs framework these pages run on
@olwiba/genesis-renderRenderingJSON-to-UI engine behind the app pages
@olwiba/genesis-startScaffoldingCreates and stamps new projects from the template
@olwiba/genesis-syncMaintenanceReports drift between your project and ecosystem releases

Dependencies flow downward: CN is the foundation, DOCS and UI build on it, and Genesis consumes them all as published packages.

The thin-route rule

The rule that keeps a project maintainable: routes are thin. A route does routing, data wiring, and composition of olwibaUI blocks. Local components are only for irreducibly project-specific glue, like binding your tRPC data into a block's props.

Before adding a file to src/components/, ask: is this reusable across projects? If yes, it belongs upstream in the ecosystem. Components that render UI without routing or project-config logic are drift candidates.

Staying current

Ecosystem packages are versioned and published. Updates arrive like any dependency:

bunx @olwiba/genesis-sync   # report where you have drifted behind
bun add @olwiba/ui@latest   # update deliberately

Always use published versions. Local path dependencies and bun link are unsupported: they break SSR module resolution and bypass the release path that makes upstream fixes trustworthy.

Why this shape

A template you clone is a snapshot; it goes stale the day you start. An ecosystem of published packages keeps improving under your project: a fixed primitive, a polished block, or a better tool lands upstream once, and every project inherits it through a normal update. Your foundation appreciates instead of rotting.