Overview
The Conty Design System is built in public with small, frequent contributions. This guide will help you contribute effectively to the project.Prerequisites
Before you start, ensure you have the following installed:- Node.js >= 20
- npm
Local Setup
The
@storybook/addon-mcp is enabled. Validate the MCP endpoint at http://localhost:6006/mcp during local setup.Available Scripts
The monorepo provides several useful scripts:| Script | Description |
|---|---|
npm run storybook | Start the Storybook development server |
npm run build-storybook | Build Storybook for production |
npm run build | Build all packages in the monorepo |
npm run lint | Run ESLint across all packages |
npm run typecheck | Validate TypeScript types across all packages |
Contribution Workflow
Make your changes
Develop your component or feature in Storybook. Follow the Definition of Done criteria.
Create a changeset
Document your changes using Changesets:This command will prompt you to:
- Select which packages were affected
- Choose the version bump type (major, minor, patch)
- Write a summary of the changes
Changesets Workflow
We use Changesets to manage versioning and releases.Creating a Changeset
When you make a change that affects package consumers:- Package selection: Choose which packages are affected by your change
- Version bump: Select the type of version bump:
- Patch: Bug fixes and minor updates
- Minor: New features (backwards compatible)
- Major: Breaking changes
- Summary: Write a brief description of the change
Changesets are stored in
.changeset/ as markdown files. These files are committed with your changes and used during release.Release Process
The release process is managed by maintainers:Monorepo Structure
The Conty Design System is organized as a monorepo with the following packages:@conty/design-system
@conty/design-system
The main entry point package for external consumption. Import this package in your applications.
@conty/tokens
@conty/tokens
Design tokens and theme definitions. Contains the canonical
tokens.json file with all visual values.@conty/ui
@conty/ui
Reusable React components. This is where most component development happens.
@conty/storybook
@conty/storybook
Visual catalog and development environment. The official place to develop and validate UI components.
@conty/eslint-config
@conty/eslint-config
Shared ESLint configurations for consistent code style.
@conty/tsconfig
@conty/tsconfig
TypeScript presets and configurations.
Principles
When contributing, keep these principles in mind:Storybook-First
Every component is born and evolves in Storybook. Stories are not just documentation - they are also test cases covering rendering, interaction, accessibility, and visual regression.Token-First
No visual values (colors, spacing, radius, typography, shadows, motion) should be hardcoded in components. Values must exist intokens.json and be referenced in components.
Incremental Without Stopping Product
Migration happens in waves, by domain. Use feature flags and fallbacks for sensitive flows.Stable Semantic Contract
Token names define intention, not implementation. Use the same semantic names between TypeScript and Dart. Avoid renaming tokens in use - prefer deprecation with a migration window.Getting Help
If you need help:- Review the Definition of Done checklist
- Check the Storybook workflow guide
- Ask questions in your PR
- Review existing components in Storybook for examples