Boundless Bounty is an open-source bounty platform built on Stellar that supports all types of Web3 work—not just code. Contributors can earn XLM for design, writing, research, marketing, community management, and development tasks.
Key Features:
- 🎯 Multiple bounty claiming models
- ⚡ Credit-based application system
- 🔐 Passkey wallet integration
- 💰 Smart contract escrow
- 📊 On-chain reputation system
Blockchain:
- Stellar Network
- Soroban Smart Contracts
- smart-account-kit for passkey wallets
Frontend:
- React/Next.js
- TailwindCSS
- Stellar SDK
Backend:
- Node.js/Express
- PostgreSQL
- Redis (caching)
- GraphQL Subscriptions via
graphql-ws(replaces Socket.IO for real-time sync)
Integrations:
- GitHub OAuth
- KYC providers
- Payment processors
node >= 18.0.0
npm >= 9.0.0# Clone repository
git clone https://github.com/boundlessfi/bounties.git
cd bounty
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Run development server
npm run devAll bounty budgets are locked in Soroban smart contracts until work is approved.
# Unit tests
npm test
# Integration tests
npm run test:integration
# Smart contract tests
npm run test:contracts# Production build
npm run buildWe use ESLint and Prettier:
npm run lint
npm run formatWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Frontend components and UI/UX improvements
- API endpoints and services
- Documentation
- Testing and QA
- Bug fixes and security patches
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
GET /api/bounties # List all bounties
GET /api/bounties/:id # Get bounty details
POST /api/bounties # Create bounty (auth required)
PUT /api/bounties/:id # Update bounty (auth required)
DELETE /api/bounties/:id # Delete bounty (auth required)
GET /api/applications # List applications
POST /api/applications # Submit application (auth required)
PUT /api/applications/:id # Update application (auth required)
GET /api/users/:id # Get user profile
PUT /api/users/:id # Update profile (auth required)
GET /api/users/:id/reputation # Get reputation score
Please report security vulnerabilities to security@boundlessfi.xyz. Do not open public issues for security concerns.
- Passkey authentication (WebAuthn)
- Smart contract escrow
- Rate limiting on API endpoints
- Input validation and sanitization
- CORS protection
- SQL injection prevention
cd frontend
npm run test
npm run test:e2eThis project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: docs/
- API Reference: docs/API.md
- Smart Contract Docs: docs/CONTRACTS.md
- Stellar Docs: stellar.org/docs
- Soroban Docs: soroban.stellar.org
- Issues: GitHub Issues
- Discord: Join our server
- Email: dev@boundlessfi.xyz
This repository validates that the local lib/graphql/schema.graphql is kept in sync with the canonical GraphQL schema that lives in the backend repository.
- The GitHub Actions workflow
.github/workflows/check-schema.ymlrunsnode ./scripts/sync-schema.js --checkon push and pull requests. - If the canonical schema is stored in the private backend repo
boundlessfi/boundless-nestjs, the workflow can check out that repo when you provide a repository PAT in theBOUNDLESS_NESTJS_TOKENsecret.
How to enable CI checks for a private backend repo:
- Create a GitHub Personal Access Token (PAT) with
repo(read) scope forboundlessfi/boundless-nestjs. - In this repository, go to Settings → Secrets → Actions and add a new secret named
BOUNDLESS_NESTJS_TOKENwith the PAT value. - The workflow will automatically checkout
boundlessfi/boundless-nestjsinto theboundless-nestjspath and the sync script will copysrc/schema.gqlfrom there.
If you do not want to provide cross-repo access, two alternatives are supported:
- Set the
CANONICAL_SCHEMAenvironment variable (or repository secret) to a path or URL where the canonicalschema.gqlcan be found, or - Keep a copied
lib/graphql/schema.graphqlfile in this repo and update it manually when the backend schema changes.
Local commands:
# copy the canonical schema into this repo (useful for local development)
npm run sync-schema
# CI-friendly check (fails if out-of-sync)
npm run check-schemaBuilt with: