We welcome contributions to BettaPay! This guide details our development guidelines, workspace layout, testing standards, and pull request workflows.
Our workspace is structured as a multi-repository project, divided by responsibilities:
BettaPay-Contract: Rust smart contracts built using the Soroban SDK.BettaPay-Backend: Node.js/TypeScript microservices managed via pnpm workspaces.BettaPay-Frontend: Next.js merchant dashboard utilizing Tailwind CSS.
main: Production-ready branch. All merges here require reviews, testing, and continuous integration checks to pass.- Feature/Bug Branches: Formatted as
feature/your-feature-nameorbugfix/issue-description. - Branch out from
mainand submit your Pull Request to merge back intomain.
Requires Rust and the soroban-cli installed.
cd BettaPay-Contract
# Build wasm binaries
cargo build --target wasm32-unknown-unknown --release
# Run tests
cargo testRequires Node.js 20+ and pnpm.
cd BettaPay-Backend
# Setup environment variables
cp .env.example .env
# Install dependencies
pnpm install
# Generate Prisma Client
pnpm prisma generate
# Start services in development mode
pnpm devcd BettaPay-Frontend
# Setup environment variables
cp .env.local .env
# Install dependencies
pnpm install
# Start dev server
pnpm devTo keep the codebase consistent, we enforce standard formatting across components.
- We use ESLint and Prettier to enforce formatting rules.
- Run
pnpm lintandpnpm formatbefore opening a pull request. - Ensure all types are properly defined and strict null checking passes.
- Follow standard Rust idiomatic conventions.
- Format contract code using
cargo fmt. - Lint using
cargo clippy.
No pull request will be merged without accompanying tests or validation verification:
- Unit Tests (Smart Contracts):
- Run
cargo testinBettaPay-Contract/. Ensure coverage handles edge cases (e.g., negative balance checks, unauthorized admin calls).
- Run
- Backend API Validation:
- Write unit and integration tests using Jest/mocha or built-in test runners.
- Validate input properties using Zod models under
shared/validation.
- Frontend Diagnostics:
- Ensure a clean production build by running
pnpm buildin the frontend directory. - Check component access properties for compliance.
- Ensure a clean production build by running
- Commit Messages: Follow Conventional Commits:
feat: add merchant settlement rule configurationfix: resolve Horizon client connection timeoutdocs: update deployment guidelines
- Issue Linking: Link your PR to an open issue (e.g.,
Closes #10). - Review Process: Every PR requires approval from at least one core maintainer. Ensure the CI suite completes successfully.