Overview

Packages are what we share across products: runtime crates and unstyled interface components.

Keep a package when two products would otherwise copy the same rule. Document the public surface first. Internals can move. The contract should not. Version by behaviour, not by file count. If it only serves one app, it stays in that app.

Libraries

  • Api — HTTP methods, registered on the gateway.
  • Auth — first-party JWTs and the browser session.
  • Blob — one bucket, workspace key prefixes.
  • Channels — one Redis bus. ch.pub appends the stream. The channels process stores it. ch.sub reads one group.
  • Db — one Postgres database per service, opened with kalt_db::open.

Components

Sidebar is the glass panel on the left and the right of each app.

Unstyled interface components: accessible parts, scoped CSS, and short CSS transitions instead of animation libraries.

Use the primitives from components/ui/base. They auto-import as Ui… names. Assemble the parts in a page, then style the open and closed states with data-open, data-starting-style, and data-ending-style. Start with Accordion.

  • Plot — interactive 3D cube for momentum and velocity, features, and organization.