We can use help in a bunch of areas and any help is appreciated. Our GitHub issues serve as a place for any discussion, whether it's bug reports, questions, project direction etc. As the project grows this policy may change.
Our Discord server is open for help and more adhoc discussion. All activity on the Discord is still moderated and will be strictly enforced under the project's Code of Conduct.
Building this project requires Node.js v19.1.0
, which can be installed using nvm (recommended) or Node.js.
We use pnpm 8.10.2
as a package manager, which can be installed following pnpm Installation.
Clone the repository and navigate to the design
directory:
git clone https://github.com/jundaoapp/design
cd design
Install all packages and dependencies:
pnpm install
Running Storybook:
pnpm storybook
All Jundao Design components should accept their underlying component's props by extending its intrinsic element attributes. They should also combine provided props with their own (see here).
The visual design is based off a mix of the Atlassian Design System and Ant Design and Android UI.
Component style should be made in SCSS and all components should be made accessible using Kobalte (when available, else see below).
Each component should also follow the Web Accessibility Initiative - Accessible Rich Internet Applications (WAI-ARIA). A storybook tab is accessible in the component addons panel.
If files specific to your local development environment should be ignored, please add these files to a global git ignore file rather than to a git ignore file within Jundao Design.
You can find more information on this process here.
pnpm format
is script that runs Rome under the hood;pnpm check
also runs Rome.pnpm check-typescript
is script that runs the Typescript compiler;
Tip: use
pnpm ca
to run all of them.
Internally, the Jundao Design adheres as closely as possible to the conventional commit specification. The following this convention encourages commit best-practices and facilitates commit-powered features like change log generation.
The following commit prefixes are supported:
feat:
, a new featurefix:
, a bugfixdocs:
, a documentation updatetest:
, a test updatechore:
, project housekeepingperf:
, project performancerefactor:
, refactor of the code without change in functionalitystyle:
, changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)ci:
, changes to CI configuration files and scripts
To skip automatic releases include [skip release]
in the commit message.
Below are examples of well-formatted commits:
feat(button): handle click event
fix: fix font size on Safari
docs: fix link to website page
test(input): add more cases to handle keyboard events
Feature feat:
prefixes should not be scoped for new components.
When creating a new pull request, it's preferable to use a conventional commit-formatted title, as this title will be used as the default commit message on the squashed commit after merging.
We follow the Semantic Versioning 2.0.0.
New releases are automatically managed by semantic-release.