Thank you for your interest in contributing! This document describes how to get set up, propose changes, and work with the maintainers.
-
Prerequisites
- Node.js >= 20
- Rust toolchain (via
rustup) pnpmfor JS tooling
-
Initial setup
git clone https://github.com/Elata-Biosciences/elata-bio-sdk.git
cd elata-bio-sdk
./run.sh doctor # validates toolchain, dependencies, and package artifactsSee README.md for details on building Rust crates and web packages.
See docs/README.md for the broader docs map, and AGENTS.md for the
repo-specific AI agent playbook.
If your change touches demo scaffolding, also read docs/create-elata-demo.md
and packages/create-elata-demo/README.md so the code, contributor docs, and
consumer docs stay aligned.
If your change touches in-repo demos or example code, also check
docs/dev_setup.md, docs/repo-map.md, and the nearest package README so the
repo-development path stays clearly separated from the consumer scaffolding
path.
- Open an issue (recommended)
- Describe the problem, proposal, or feature.
- Include any relevant logs, screenshots, or minimal reproductions.
- Fork and branch
- Create a feature branch from
main.
- Create a feature branch from
- Make your changes
- Keep changes focused and reasonably small.
- Follow existing code style and patterns.
- Add tests where appropriate
- Rust:
cargo test - Web packages:
pnpm testin the relevantpackages/*directory. - Scaffolder changes:
./run.sh test create-elata-demo - Demo workflow changes: run the narrowest affected
./run.sh demo ...flow or package build that proves the docs still match reality.
- Rust:
- Run checks
- Prefer
./run.shor documented scripts fromREADME.mdwhere available. - If you changed
elata-docs, runpnpm docs:mintlify:check(orpnpm docs:check). - If you changed scaffold commands or template behavior, update
README.md,docs/create-elata-demo.md, and nearby contributor docs in the same task when practical.
- Prefer
- Add a changeset (if your change should be included in a release):
- Run
./run.sh changeset(orpnpm changeset) and follow the prompts. - Commit the new file under
.changeset/with your PR.
- Run
- Open a pull request
- Reference associated issues.
- Summarize what changed and why.
If you are adding or changing how a headset delivers data to the browser EEG
stack, read docs/contributing-eeg-transports.md
first. New hardware should converge on HeadbandTransport /
HeadbandFrameV1 from @elata-biosciences/eeg-web. Prefer extending
packages/eeg-web-ble or adding a focused sibling package under packages/
rather than forking consumer demos.
- Prefer small, composable modules and clear interfaces.
- Avoid unnecessary breaking changes to public crates and npm packages.
- Keep public APIs well-documented and stable when possible.
- The canonical new-app path is
@elata-biosciences/create-elata-demo. npm create @elata-biosciences/elata-demoand directcreate-elata-demoinvocations should stay documented together when behavior changes.- The current scaffold flow supports interactive template selection, template
aliases (
rppg,eeg,ble; plus legacyeeg-web-ble-demo), and--list-templates. - If you scaffold inside another
pnpmworkspace, verify thepnpm --dir my-app --ignore-workspace ...caveat before treating it as a scaffold failure.
./run.sh demo eeg|rppg|halis for SDK development and manual repo validation, not the default consumer onboarding flow.eeg-demo/,packages/rppg-web/demo/,ios-demo/, andandroid-demo/are reference or SDK-development surfaces.- When docs mention both scaffolded apps and in-repo demos, lead with the recommended default first and clearly label the repo-demo path as internal or maintainer-oriented.
- Use GitHub issues and PRs for technical discussion.
- Be respectful and follow the project’s
CODE_OF_CONDUCT.md.
By contributing, you agree that your contributions will be licensed under the MIT License, the same as this repository.