First off, thank you for considering contributing to the Stellar Address Kit! It's people like you that make the Stellar ecosystem a better place for developers.
The most impactful way to contribute is by adding new test vectors to spec/vectors.json. If you find an edge case or a tricky address format, follow these steps:
- Add the case to
spec/vectors.json. - Run
node spec/validate.jsto ensure it meets the schema. - Update the TypeScript, Go, and Dart implementations to pass the new vector.
- Check the Issues to see if the bug has already been reported.
- If not, open a new issue with a clear title and description, including steps to reproduce the bug.
When triaging issues, please ensure they are properly labeled to help maintainers organize work. Examples:
- bug: Something isn't working. (e.g.,
bug,priority:high) - enhancement: New feature or request. (e.g.,
enhancement,needs-discussion) - documentation: Improvements or additions to documentation. (e.g.,
documentation) - good first issue: Good for newcomers. (e.g.,
good first issue,help wanted)
- Open an issue to discuss your idea.
- Clearly explain why this enhancement would be useful to others.
- Fork the repo and create your branch from
main. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes (
pnpm test,go test ./...,dart test). - Use
pnpm changesetto document your changes.
# Install root/workspace dependencies
pnpm install
# Install app-specific dependencies when working in those folders
cd ignition-api && npm install
cd ../ignition-pay-frontend && pnpm install
cd ..
# Run the spec validator
node spec/validate.js
# Run tests across all packages
pnpm testThe root install configures Git to use the repository-managed hooks in .githooks/. From then on, every commit automatically runs the staged-file formatter/linter pipeline before Git creates the commit.
If you need to re-apply the hook setup manually:
node scripts/setup-git-hooks.mjs- TypeScript: Follow the existing Prettier/ESLint config.
- Go:
gofmtruns automatically for stagedpackages/core-gochanges before commit. - Dart:
dart formatruns automatically for staged Dart changes before commit.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
feature/<issue-number>-<description>— New features (e.g.,feature/45-android-setup)bugfix/<issue-number>-<description>— Bug fixeshotfix/<issue-number>-<description>— Urgent production fixesdocs/<description>— Documentation only changeschore/<description>— Maintenance, CI/CD, tooling
We follow Conventional Commits:
feat:— A new featurefix:— A bug fixdocs:— Documentation onlychore:— Maintenance, CI/CDrefactor:— Code change that neither fixes a bug nor adds a featuretest:— Adding or updating tests
Format: <type>: <description>
- Create a feature branch from
main - Implement your changes with clear commit messages
- Update documentation and tests as needed
- Create a pull request against
main - Ensure CI checks pass before requesting review
- Squash merge on approval
- All code requires at least one approval
- Address all review comments before merging
- Keep PRs focused on a single concern