A design system of its own
The problem it solves
The Starter has four front ends — the application, the landing page, the documentation site, the playground — plus the identity host's sign-in pages. A product's look has to hold across all of them, and change in one place.
@blouppy/ui (front/libs/ui/) is that place: the design tokens (colours, type,
spacing, radii, shadows, in light and dark), the theme primitives and the components,
built on Angular and the Angular CDK. Every app consumes it as source from the working
tree, and the identity host's stylesheet imports the same tokens. DESIGN.md is its
specification.
Owning the components means owning their behaviour: their accessibility, their translations (English and French ship with the library), their API documentation.
What it costs
- Components to maintain. A primitive the library lacks is added to it, not pulled from a package.
- A playground to keep current. Every primitive has an entry in
front/playground/, and its build fails on an input or output without documentation. - Visual review. The galleries (
npm run gallery) are the only thing that looks at layout, so a change to a token or a component is followed by a gallery run.
What you can relax
- Rebrand through the tokens. Colours, fonts and radii are CSS custom properties in
front/libs/ui/src/tokens/tokens.css; changing them re-themes every app at once. - Add a library for one specialised need — a data grid, a calendar — inside a
@blouppy/uicomponent that wraps it, so the apps keep importing from one place.