Contributing
Updated Nov 4, 2026
Cardealer is an open-source Fairspec extension developed by the Datist team. Everyone is welcome to help shape it with bug reports, ideas and questions; changes to the extension come from team members.
Contributors
Report a bug
Open an issue on GitHub Issues. A good report includes:
- the Cardealer version and how you use it
- the smallest dataset or profile that reproduces the problem
- the result you got and the result you expected
Share an idea or ask a question
Use GitHub Discussions for anything that isn't a bug:
- Ideas: features and improvements you'd like to see
- Q&A: questions about using Cardealer
- Show and tell: projects built with Cardealer
Ideas the team picks up turn into issues.
Members
The rest of this guide is for Datist team members working on Cardealer.
Prerequisites
- Development:
- Node 24+ (with pnpm) - How to Install
- Python 3.12+ (with uv) - How to Install
- Rust (with cargo) - How to Install
- Releasing:
- Trusted publishers for
datisthq/cardealer, workflowrelease.yaml, environmentrelease, on npm, PyPI and crates.io - In case you use it on GitHub, updated the publishing source in the settings to
Github Actions.
- Trusted publishers for
Development
Getting Started
Start by cloning the repository, installing the dependencies, and starting the site:
git clone https://github.com/datisthq/cardealer.git
cd cardealer
pnpm install
pnpm startManaging the Project
pnpm install- Install dependenciespnpm build- Build the TypeScript, Python and Rust packagespnpm publish:profiles- Publish the current version's profiles and schemas to the sitepnpm format- Format the project files to consistent stylepnpm start- Start the documentation site in development modepnpm test- Verify project integrity
Working on the Extension
The fiels you need to edit to update the extension:
- standard/profiles/ - Edit the profile to model your dataset
- standard/schemas/ - Edit the schemas to model your data tables
- standard/specs/ - Edit the specification prose
- standard/overview/ - Edit the overview and examples
- typescript/, python/, rust/ - Edit the three libraries to match
- conformance/ - Edit the cases that pin the behaviour
- .livemark/routes/index.tsx - Edit the homepage
There are no generators: a change to the standard is carried by hand into the specification, all three libraries and the conformance cases in the same pull request. The .agents/skills/standard-development skill is the checklist.
Releasing
After your pull request is ready to be merged, you can release a new version of the extension by merging the pull request into the main branch:
- Squash and merge the PR using conventional commits.
- In case you use it on GitHub, Github Actions will automatically create a new release (publishing to PyPI and NPM waits for the Fairspec base libraries to be released), publish the documentation to GitHub Pages.
Created with ❤ and Livemark