Skip to content

Repository files navigation

Nyuchi Design System

Shared, publishable UI packages — Nyuchi's implementation of the Mzizi architecture, consumed by the marketing and documentation sites.

Lint Publish License: MIT

Packages: @nyuchi/ui · @bundu/ui | Architecture: mzizi.dev


What this is

A pnpm workspace holding the UI packages Nyuchi publishes to npm. Both packages implement the Mzizi architecture — an open-architecture project of the Bundu Foundation, operated and developed by Nyuchi — but the packages themselves are Nyuchi-owned implementations, not Mzizi itself. Mzizi's own registry lives at mzizi-dev/mzizi-registry.

Package Framework What it is
@nyuchi/ui Svelte 5/SvelteKit The app-UI layer for Nyuchi apps
@bundu/ui Astro + React The marketing UI kit behind the bundu, nyuchi and mukoko marketing sites

Both packages ship byte-identical styles/tokens.css, styles/theme.css, tokens.json, tailwind-palette.mjs and styles/brand-*.css. They are two outputs of one generator, not two hand-maintained files.

Tokens

All 21 Mzizi colour families (7 minerals, 7 heritage, 7 experimental) under one --color-* namespace, plus the nine-step surface ladder and the connectivity status trio, in light and dark, with brand-*.css overlays that swap the brand primary. Everything is generated from tokens/canon.snapshot.json:

pnpm canon:fetch     # refresh the snapshot from canon (network, on demand)
pnpm tokens:build    # regenerate every artifact from the snapshot (offline)
pnpm tokens:check    # CI gate: fail if any generated file was hand-edited (offline)
pnpm canon:parity    # CI gate: fail if the snapshot has drifted from canon (network)

The snapshot is machine-written from two sources that are cross-checked against each other — api.mzizi.dev/api/v1/brand and mzizi-dev/mzizi-registry's lib/tokens/palette.source.ts. Nobody types a hex, and never a raw hex in source. The values do not live in a database; Mzizi holds no brand or primitive token data in one.

canon:parity reaches the network and therefore runs in CI only — it refuses to run without CI set unless given --force. It is never in a build, a prepack, a postinstall or a runtime path.

Development

pnpm install
pnpm lint

Publishing

Published to npm automatically by the publish workflow when a GitHub Release is published (or a v* tag is pushed) — @nyuchi/* under the @nyuchi npm org and @bundu/* under the @bundu npm org. The workflow requires an NPM_TOKEN with publish access to both orgs. NPM_TOKEN is an organisation secret on mukoko-dev and is visible to this repository (verified 2026-09-12, after the transfer from nyuchi), so no repository-level secret is needed.

Publishing is the owner's call. CI does not publish on a branch push — only on a published GitHub Release or a v* tag.

Licence

MIT © Nyuchi Africa (Pvt) Ltd.

About

Nyuchi Design System — shared, publishable UI packages. Nyuchi-owned implementation of the Mzizi architecture; consumed by the marketing sites and the documentation sites.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages