First off — thank you for taking the time to contribute! 🎉
Stellar MicroPay is an open-source project and every contribution matters, whether it's fixing a typo, reporting a bug, or building a new feature.
- Code of Conduct
- How to Fork & Set Up
- Running the Project Locally
- API Versioning & Deprecation Policy
- Making Changes
- Submitting a Pull Request
- Issue Templates
- Project Structure Overview
Be kind, inclusive, and constructive. We follow the Contributor Covenant. Harassment of any kind will not be tolerated.
Click Fork on the top-right of the GitHub page to create your own copy.
git clone https://github.com/YOUR_USERNAME/stellar-micropay.git
cd stellar-micropaygit remote add upstream https://github.com/your-org/stellar-micropay.gitgit fetch upstream
git checkout main
git merge upstream/maincd frontend
npm install
cp .env.example .env.local
# Edit .env.local if needed
npm run devcd backend
npm install
cp .env.example .env
npm run dev# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32-unknown-unknown
# Install Stellar CLI
cargo install --locked stellar-cli
# Build the contract
cd contracts/stellar-micropay-contract
cargo build --target wasm32-unknown-unknown --releaseWhen contributing changes to backend API routes:
- Always implement new routes under
/api/v1/: Primary routes must be mounted under/api/v1/*. - Preserve backward compatibility: When making contract changes, keep legacy routes mounted under
/api/*and attach theapiDeprecationHeadermiddleware fromsrc/middleware/deprecation.js. - Deprecation headers: Legacy endpoints will respond with
Deprecation: true,Sunset: <date>, andLink: </api/v1/...>; rel="successor-version". - Testing: Include unit/integration test coverage in
backend/__tests__/versioning.test.jsverifying that both versioned and legacy paths respond correctly.
feature/your-feature-name
fix/bug-description
docs/what-you-documented
chore/what-you-cleaned-up
Example:
git checkout -b feature/qr-code-paymentsWe use Conventional Commits with automated enforcement via commitlint and Husky:
feat: add QR code payment generation
fix: correct balance display on dashboard
docs: update API endpoint documentation
chore: upgrade stellar-sdk to latest
Commit types:
feat— A new featurefix— A bug fixdocs— Documentation changesstyle— Code style changes (formatting, linting)refactor— Code refactoring without feature changesperf— Performance improvementstest— Test additions or changeschore— Build, dependency, or tooling changesci— CI/CD configuration changesrevert— Revert a previous commit
Commit message validation:
Husky automatically runs commitlint on every commit to validate the message format. If your commit message doesn't follow the Conventional Commits format, the commit will be rejected with a helpful error message. Simply fix the message and try again.
Example:
# ✅ Valid
git commit -m "feat: add payment history export"
# ❌ Invalid (will be rejected)
git commit -m "Added new stuff"-
Push your branch to your fork:
git push origin feature/your-feature-name
-
Open a PR against the
mainbranch ofstellar-micropay -
Fill in the PR template — describe what you changed and why
-
Link any related issues using
Closes #123 -
Wait for a review — we aim to respond within 48 hours
- My code follows the project's style
- I've tested my changes locally
- I've updated documentation if needed
- No new warnings or errors in the console
- I've added a brief description of the change
When creating issues, please use the appropriate template:
- Bug Report — Something is broken
- Feature Request — You have an idea
- Question — You need help understanding something
stellar-micropay/
├── frontend/
│ ├── components/ ← Reusable React components
│ ├── pages/ ← Next.js pages (routes)
│ ├── lib/ ← Stellar SDK + wallet helpers
│ └── utils/ ← Shared utility functions
├── backend/
│ └── src/
│ ├── routes/ ← Express route definitions
│ ├── controllers/← Request handlers
│ └── services/ ← Business logic
├── contracts/ ← Soroban smart contracts (Rust)
└── docs/ ← Architecture & API docs
Look for issues tagged good first issue — these are beginner-friendly tasks!
Thanks again for contributing. You're helping make global payments accessible to everyone 🌍