We love contributions! This guide covers development setup, building, testing, and releasing.
- uv for Python dependency management
- pnpm for JavaScript dependency management
- Node.js >= 18
- Python >= 3.11
git clone https://github.com/buckaroo-data/buckaroo.git
cd buckaroo
uv sync --dev --all-extrascd packages/buckaroo-js-core
pnpm install./scripts/full_build.shThe repo ships pre-commit / pre-push hooks under .githooks/. Point git at
them once per clone:
git config core.hooksPath .githooksThe shims defer to pre-commit to run the checks
declared in .pre-commit-config.yaml (lint on commit, full-tree ruff +
paddy_format --check on push — same as CI's Python / Lint job). Make
sure pre-commit is on your PATH:
uv tool install pre-commitTracking the hooks under .githooks/ instead of relying on pre-commit install's generated shims means every clone runs identical hook code,
and updates propagate via git pull.
uv run pytest tests/unit/ -v
uv run ruff check --fixcd packages/buckaroo-js-core
pnpm testcd packages/buckaroo-js-core
pnpm storybook
# open http://localhost:6006Build a static Storybook site:
cd packages/buckaroo-js-core
pnpm build-storybookInstall browsers:
cd packages/buckaroo-js-core
pnpm exec playwright installRun tests:
pnpm test:pw --reporter=lineUseful variants:
pnpm test:pw:headed # visible browser
pnpm test:pw:ui # Playwright UI
pnpm test:pw:report # open HTML reportuv add <package> # main dependency
uv add --group <group> <package> # extras group- Update
CHANGELOG.md - Trigger the Release workflow via GitHub Actions (
workflow_dispatch), choosingpatch,minor, ormajor - The workflow bumps the version in
pyproject.toml, creates the tag, builds, publishes to PyPI, and creates a GitHub release
We welcome issue reports. Please choose the proper issue template so we get the necessary information.