Skip to content

Latest commit

 

History

History
106 lines (73 loc) · 4.69 KB

File metadata and controls

106 lines (73 loc) · 4.69 KB

Contributing to StarInvoice

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.

Code of Conduct

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.

Getting Started

  1. Fork the repo and clone it locally
  2. Install Rust and the Soroban CLI (see README)
  3. Run cargo test to confirm the baseline passes
  4. Pick an open issue and comment to claim it

Open Issues (Good First Contributions)

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

Guidelines

  • Keep changes focused — one issue per PR
  • Add or update tests for any logic you implement
  • Follow existing code style (run cargo fmt before committing)
  • Add event emissions for any state-changing functions
  • Update the README status table when a function is fully implemented

Code Style

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 vulnerabilities

Ensure cargo fmt passes on all changes before opening a PR.

Pull Request Process

  1. Open a PR referencing the issue number (e.g. Closes #1)
  2. Describe what you implemented and any design decisions
  3. Ensure all tests pass
  4. A maintainer will review and merge

Good First Issues

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.

Current Good First Issues

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

How to Get Started

  1. Comment on the issue you'd like to work on (to avoid duplicate work)
  2. Fork the repository and create a new branch (git checkout -b feature/issue-XXX)
  3. Make your changes and submit a Pull Request
  4. 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!

Questions & Community Discussions

Have a question? Need help? Want to share an idea?

We use GitHub Discussions for all community conversations.

→ Go to Discussions

Available Categories:

  • 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.