This project is intentionally scoped as an MVP with obvious upgrade paths.
If you want to seed good open-source work quickly:
- Pick one of the drafts in
docs/issues. - Open it as a GitHub issue with the suggested labels.
- Tag whether it is
good first issue,enhancement, orhelp wanted.
High-value contribution areas:
- Wallet-authenticated payout flow
- GitHub App or webhook integration
- Soroban event indexing
- Persistent relational storage
- CI and integration tests.
We follow the Conventional Commits standard to keep the commit history clear and enable automated changelog generation.
<type>(<scope>): <subject>
<body>
<footer>
Rules:
- Keep
<subject>under 50 characters, lowercase, no period - Use imperative mood ("add" not "added")
- The
(<scope>)is optional but recommended for clarity
| Type | Purpose | Example |
|---|---|---|
feat |
New feature | feat(frontend): add wallet connection UI |
fix |
Bug fix | fix(backend): correct bounty status transition logic |
docs |
Documentation only | docs(CONTRIBUTING): add commit message guide |
test |
Test additions or fixes | test(contract): add escrow release scenarios |
refactor |
Code refactoring (no behavior change) | refactor(backend): extract validation to schema |
chore |
Tooling, dependencies, build scripts | chore(deps): update Express to 4.18 |
perf |
Performance improvements | perf(frontend): memoize bounty list rendering |
ci |
CI/CD pipeline changes | ci: add GitHub Actions workflow |
Good:
feat(contract): implement release_bounty escrow transfer
Add on-chain token transfer logic when maintainer approves
bounty release. Validates contributor address and contract
balance before transfer.
Closes #42
Also good (for simple changes):
fix(api): reject negative bounty amounts
Before submitting a PR, verify:
- Branch created from
main— keep it focused on one issue - PR title follows conventional commits — e.g.,
feat(frontend): add wallet support - Tests pass locally
- Frontend:
npm run lint && npm run build(infrontend/) - Backend:
npm run lint && npm run build(inbackend/) - Contract:
cargo test && cargo clippy(incontracts/)
- Frontend:
- No TypeScript errors —
npm run buildcatches them - No debug code left behind
- No
console.log(),console.debug(),console.warn() - No
// TODOcomments without an associated issue
- No
- Documentation updated (if applicable)
- API changes? Update
ONBOARDING.mdor in-code JSDoc - New feature? Add example to the relevant doc or README
- Architecture change? Update
docs/ARCHITECTURE.md
- API changes? Update
- Commits use conventional format — squash if needed
- PR description includes:
- What changed and why
- How to test/verify the change
- Link to related issue(s):
Closes #<issue-number>
- New to the project? Start with ONBOARDING.md
- Stuck on a specific feature? Read the architecture docs
- Local webhook testing? ngrok setup guide
- Can't figure something out? Open a Discussion or comment on the issue you're working on
We value quality contributions and clear communication. If this guide is missing something, a PR improving it is one of the most valuable contributions you can make.
Happy coding! 🚀