Contributing
Lerpa UI is open source and welcomes contributions — new components, fixes, and docs. The project lives on GitHub.
Get the monorepo
It's a pnpm + Turborepo monorepo (Node 20+). Clone it and install:
git clone https://github.com/cuibit-labs/lerpaui.gitpnpm installpnpm devThe docs site runs on :3001.
Where things live
- packages/ui
- The source of truth — components in
src/components, page blocks insrc/blocks. - packages/registry
- The compiler that turns
packages/uiinto the shadcn-compatible registry JSON. Never hand-edit generated registry files. - packages/cli
- The
lerpa-clithat consumers run. - apps/docs
- The Next.js docs and gallery site.
Add a component
- Create the component in
packages/ui/src/components, following the existing conventions: design tokens (no inline colors),prefers-reduced-motiongating on any animation, and accessible semantics. - Export it from
packages/ui/src/index.ts. - Rebuild the registry so the CLI can serve it.
- Add a demo / gallery entry in the docs app if applicable.
- Run the quality gates and open a PR.
pnpm registry:buildQuality gates
All three must pass with zero errors before a PR is merged:
checks
pnpm lint # eslint, incl. jsx-a11y rules
pnpm typecheck # tsc across the monorepo
pnpm test # vitest + vitest-axeThe registry is downstream of packages/ui. If you add or edit a component, rebuild the registry and re-run registry:validate rather than editing generated JSON.
New to the codebase? Skim the project structure and accessibility guide first — they capture the conventions every contribution is expected to follow.