Opentribe - The Talent Layer for Polkadot

November 14, 2025 ยท View on GitHub

Opentribe is a centralized talent marketplace for the Polkadot ecosystem, serving as the "Talent Layer" that connects organizations with skilled contributors. The platform consolidates official Polkadot Grant opportunities and enables ecosystem projects to post and manage multi-winner bounties.

๐Ÿš€ Features

For Builders

  • Browse Opportunities: Discover grants, bounties, and RFPs from across the Polkadot ecosystem
  • Build Your Profile: Showcase your skills, experience, and contributions
  • Apply & Submit: Apply for grants and submit work to bounties with transparent tracking
  • Get Recognized: Earn likes and build your reputation through quality contributions

For Organizations & DAOs

  • Post Bounties: Create multi-winner bounties with tiered rewards
  • Manage Submissions: Review, select winners, and track payments in one place
  • Build Your Team: Find and engage talented contributors for your projects
  • Organization Management: Invite team members and manage roles

For Grant Curators

  • Publish RFPs: Create official Request for Proposals to guide applicants
  • Manage Applications: Review and process grant applications efficiently
  • Track Interest: See community engagement through votes and comments

๐Ÿ›  Tech Stack

  • Framework: Next.js 15 with App Router
  • Language: TypeScript (strict mode)
  • Database: PostgreSQL with Prisma ORM
  • Authentication: Better Auth (email/password, Google, GitHub)
  • Styling: Tailwind CSS + Glass UI design system
  • Deployment: Vercel
  • Monorepo: Turborepo with pnpm workspaces

๐Ÿ“ฆ Project Structure

apps/
โ”œโ”€โ”€ web/          # Public website (opentribe.io)
โ”œโ”€โ”€ dashboard/    # Authenticated dashboard (admin.opentribe.io)
โ”œโ”€โ”€ api/          # REST API (api.opentribe.io)
โ””โ”€โ”€ docs/         # Documentation site

packages/
โ”œโ”€โ”€ auth/         # Better Auth integration
โ”œโ”€โ”€ db/           # Database models and Prisma
โ”œโ”€โ”€ base/         # UI components and design system
โ”œโ”€โ”€ email/        # Transactional emails
โ””โ”€โ”€ ...           # Other shared packages

๐Ÿšฆ Getting Started

Prerequisites

  • Node.js 18+ (v22 recommended)
  • PostgreSQL 15+
  • pnpm 8+

Installation

  1. Clone the repository:
git clone git@github.com:opentribe-dao/opentribe.git
cd opentribe
  1. Install dependencies:
pnpm install
  1. Set up environment variables: Create .env.local files in each app directory:
# apps/web/.env.local
DATABASE_URL="postgresql://[your-user]@localhost:5432/opentribe"
BETTER_AUTH_SECRET="your-secret-key"
BETTER_AUTH_URL="http://localhost:3002"
NEXT_PUBLIC_API_URL="http://localhost:3002"
# Add other required variables
  1. Set up the database:
# Create database
createdb opentribe

# Push schema
pnpm db:push  # Run from packages/db
  1. Start the development servers:
pnpm dev
  1. Seed the database with test data:
# IMPORTANT: The API server must be running in a separate terminal window(step 5) before seeding
# This uses Better Auth's API to create users with properly hashed passwords

# Option 1: Use the auth-based seeder (recommended)
pnpm db:seed:auth

# Option 2: Use the legacy seeder (creates all remaining data)
pnpm db:seed

Access Points

Test Accounts

After running pnpm db:seed:auth, use these credentials:

  • alice.rust@example.com / password123 - Builder
  • bob.ui@example.com / password123 - Builder
  • carol.writer@example.com / password123 - Builder
  • david.w3f@example.com / password123 - Org Admin (Web3 Foundation)
  • emma.moonbeam@example.com / password123 - Org Admin (Moonbeam)
  • frank.acala@example.com / password123 - Org Admin (Acala)
  • admin@opentribe.io / admin123 - Platform Superadmin

Note: User authentication requires using Better Auth's API for password hashing. The db:seed:auth script creates users through the authentication API to ensure passwords are properly hashed and will work for login.

๐Ÿ”‘ Key Models

  • Users: Builders and organization members with profiles and skills
  • Organizations: DAOs and projects that post opportunities
  • Grants: Official grant programs with RFPs
  • Bounties: Multi-winner tasks with tiered rewards
  • Submissions: Work submitted to bounties
  • Applications: Proposals submitted to grants

๐Ÿงช Testing

The project includes unit tests for core functionality including authentication, bounty management, submissions, and RFP workflows.

Running Tests

# Run all tests
pnpm test

# Run tests for a specific app
pnpm test --filter=api
pnpm test --filter=dashboard
pnpm test --filter=web

# Run tests in watch mode for development
pnpm test:watch

# Run tests with coverage
pnpm test:coverage

Test Structure

Tests are organized by module in the __tests__ directory of each app:

apps/api/__tests__/
โ”œโ”€โ”€ auth.test.ts       # Authentication and session management
โ”œโ”€โ”€ bounties.test.ts   # Bounty CRUD operations
โ”œโ”€โ”€ submissions.test.ts # Submission creation and winner selection
โ”œโ”€โ”€ rfps.test.ts       # RFP creation and voting
โ””โ”€โ”€ health.test.ts     # Health check endpoint

Writing Tests

We use Vitest for testing. Example test:

import { describe, test, expect } from "vitest";

describe("Bounty Management", () => {
  test("should create a new bounty", async () => {
    // Test implementation
  });
});

Test Coverage

Core modules with test coverage:

  • โœ… Authentication (session management, role-based access)
  • โœ… Bounty Management (CRUD, filtering, status updates)
  • โœ… Submission System (creation, winner selection, payment tracking)
  • โœ… RFP Flow (creation, voting, comments)
  • ๐Ÿšง Grant Applications (in progress)
  • ๐Ÿšง Organization Management (in progress)

๐Ÿณ Docker Setup (Optional)

For containerized development:

# Start all services in Docker
docker compose up -d

# Stop all services
docker compose down

Note: Local development (without Docker) is recommended for better performance.

๐Ÿ“ Common Commands

# Development
pnpm dev          # Start all services locally
pnpm build        # Build all packages
pnpm lint         # Run linting
pnpm format       # Format code with Biome

# Database
pnpm db:push      # Push schema to database
pnpm db:seed      # Seed test data
pnpm db:studio    # Open Prisma Studio GUI

# Testing
pnpm test         # Run all tests
pnpm test:watch   # Run tests in watch mode

๐Ÿค Contributing

We welcome contributions! Please see our contributing guidelines (coming soon).

๐Ÿ“„ License

[License information to be added]


Built with โค๏ธ for the Polkadot ecosystem