Design
Share the system, diverge the look — same components, a different brand per app.
@novalite/design-tokens is the shared layer: semantic tokens (background, primary, muted, …) plus a few presets and a generator that emits CSS variables.
Each app declares those variables in its own globals.css and overrides them for its brand. Components are written against the variables (bg-primary, text-foreground), so one component renders in any app's palette without a fork.
The DRY rule
Build components inside the app. Only when a second app needs the same custom component do you promote it to a shared package — never pre-build a UI library. The same restraint applies everywhere: build what ships, not what might.