Thanks for your interest in contributing. This project is designed to be built incrementally — most of the escrow logic is intentionally left unimplemented so contributors can own features end-to-end.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
- Fork the repo and clone it locally
- Install Rust and the Soroban CLI (see README)
- Run
cargo testto confirm the baseline passes - Pick an open issue and comment to claim it
Each TODO in the codebase maps to a GitHub issue:
| Issue | Function | Description |
|---|---|---|
| #1 | fund_invoice |
Implement escrow funding via token transfer |
| #2 | mark_delivered |
Allow freelancer to signal work completion |
| #3 | approve_payment |
Allow client to approve delivered work |
| #4 | release_payment |
Release escrowed funds to freelancer |
| #5 | InvoiceStatus |
Add Disputed and Cancelled status variants |
| #6 | Invoice |
Add deadline and multi-token support fields |
| #7 | events.rs |
Add event emitters for all state transitions |
- Keep changes focused — one issue per PR
- Add or update tests for any logic you implement
- Follow existing code style (run
cargo fmtbefore committing) - Add event emissions for any state-changing functions
- Update the README status table when a function is fully implemented
This project uses rustfmt.toml to enforce consistent formatting. All code must pass formatting checks before merging.
cargo fmt # format (must pass before committing)
cargo clippy # lint
cargo test # test
cargo audit # check dependencies for vulnerabilitiesEnsure cargo fmt passes on all changes before opening a PR.
- Open a PR referencing the issue number (e.g.
Closes #1) - Describe what you implemented and any design decisions
- Ensure all tests pass
- A maintainer will review and merge
Looking for a place to start? Here are some beginner-friendly issues that are great for new contributors. These issues require minimal prior knowledge of the codebase and are perfect for your first contribution to StarInvoice.
| Issue # | Title | Difficulty | Required Knowledge | Type |
|---|---|---|---|---|
| #1 | Setup Development Environment | ★☆☆ (Easy) | Basic Git & Node.js | Docs |
| #2 | Improve README.md with better screenshots | ★☆☆ (Easy) | Markdown | Docs |
| #3 | Add missing code comments and JSDoc | ★★☆ (Medium) | TypeScript basics | Code |
| #4 | Fix minor UI inconsistencies in invoice form | ★★☆ (Medium) | React + Tailwind | Frontend |
| #5 | Add basic unit tests for utility functions | ★★☆ (Medium) | Jest / Testing | Testing |
| #6 | Create issue templates for Bug Reports & Feature Requests | ★☆☆ (Easy) | Markdown + GitHub | Docs |
| #7 | Add FUNDING.yml for community sponsorship | ★☆☆ (Easy) | YAML | Community |
- Comment on the issue you'd like to work on (to avoid duplicate work)
- Fork the repository and create a new branch (
git checkout -b feature/issue-XXX) - Make your changes and submit a Pull Request
- Reference the issue in your PR description (
Closes #XXX)
Tip: If you're new to open source, we highly recommend starting with documentation or setup-related issues (#1, #2, #6, #7).
Want more options?
Feel free to browse all open issues labeled good first issue or help wanted on the Issues tab.
We welcome contributions of all kinds — code, documentation, design, testing, and ideas!
Have a question? Need help? Want to share an idea?
We use GitHub Discussions for all community conversations.
- Q&A — Ask questions and get help
- Ideas — Suggest new features or improvements
- Show and Tell — Share what you've built with StarInvoice
- General — Anything else related to the project
Please do not open issues for questions. Use Discussions instead — this helps keep the issue tracker clean for bugs and feature requests.