Skip to content

Latest commit

 

History

History
100 lines (77 loc) · 3.32 KB

File metadata and controls

100 lines (77 loc) · 3.32 KB

Contributing to BettaPay

We welcome contributions to BettaPay! This guide details our development guidelines, workspace layout, testing standards, and pull request workflows.


Codebase Structure

Our workspace is structured as a multi-repository project, divided by responsibilities:

  1. BettaPay-Contract: Rust smart contracts built using the Soroban SDK.
  2. BettaPay-Backend: Node.js/TypeScript microservices managed via pnpm workspaces.
  3. BettaPay-Frontend: Next.js merchant dashboard utilizing Tailwind CSS.

Development Workflow

1. Branching Model

  • main: Production-ready branch. All merges here require reviews, testing, and continuous integration checks to pass.
  • Feature/Bug Branches: Formatted as feature/your-feature-name or bugfix/issue-description.
  • Branch out from main and submit your Pull Request to merge back into main.

2. Setting Up Locally

Smart Contracts

Requires Rust and the soroban-cli installed.

cd BettaPay-Contract
# Build wasm binaries
cargo build --target wasm32-unknown-unknown --release
# Run tests
cargo test

Backend Microservices

Requires 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 dev

Frontend Dashboard

cd BettaPay-Frontend
# Setup environment variables
cp .env.local .env
# Install dependencies
pnpm install
# Start dev server
pnpm dev

Style Guidelines

To keep the codebase consistent, we enforce standard formatting across components.

TypeScript / JavaScript (Backend & Frontend)

  • We use ESLint and Prettier to enforce formatting rules.
  • Run pnpm lint and pnpm format before opening a pull request.
  • Ensure all types are properly defined and strict null checking passes.

Rust (Smart Contracts)

  • Follow standard Rust idiomatic conventions.
  • Format contract code using cargo fmt.
  • Lint using cargo clippy.

Testing Guidelines

No pull request will be merged without accompanying tests or validation verification:

  1. Unit Tests (Smart Contracts):
    • Run cargo test in BettaPay-Contract/. Ensure coverage handles edge cases (e.g., negative balance checks, unauthorized admin calls).
  2. 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.
  3. Frontend Diagnostics:
    • Ensure a clean production build by running pnpm build in the frontend directory.
    • Check component access properties for compliance.

Pull Request Guidelines

  1. Commit Messages: Follow Conventional Commits:
    • feat: add merchant settlement rule configuration
    • fix: resolve Horizon client connection timeout
    • docs: update deployment guidelines
  2. Issue Linking: Link your PR to an open issue (e.g., Closes #10).
  3. Review Process: Every PR requires approval from at least one core maintainer. Ensure the CI suite completes successfully.