Profile
Back to NewsBack
GitHub Trending 5 min
Reader Mode
SuperteamDAO/earn: An open source platform connecting crypto founders with elite talent to create bounties, and accelerate project completion

SuperteamDAO/earn: An open source platform connecting crypto founders with elite talent to create bounties, and accelerate project completion

10 hours ago

!Superteam Earn Icon

Superteam Earn

An open source platform connecting crypto founders with elite talent to create bounties, and accelerate project completion

!Project Status: Active !GitHub issues !GitHub pull requests Follow</a>

🔗Official Links

🛠️Development Setup

Prerequisites

Getting Started

  1. Clone the repository into a public Github repository (or fork it):
git clone https://github.com/SuperteamDAO/earn.git
  1. Navigate to the project directory:
cd earn
  1. Install the dependencies with the pnpm version pinned in package.json:
corepack pnpm install --frozen-lockfile

Use corepack pnpm add for dependency changes and commit both package.json and pnpm-lock.yaml. Run corepack pnpm check:lockfile before pushing. The commit hook and CI also check that the lockfile matches the manifest and overrides. Vercel uses the same pinned version and frozen install.

Do not regenerate the lockfile with a different global pnpm version: pnpm 11 ignores the pnpm.overrides field used by this repository. Upgrade pnpm deliberately, migrating its configuration and validating a frozen install together. If Corepack is unavailable, install it before running these commands.

  1. Install the MariaDB adapter (required for local MySQL development):
pnpm add @prisma/adapter-mariadb

Then, uncomment the MariaDB adapter code in src/prisma.ts: - Line 1: Uncomment the PrismaMariaDb import - Lines 35-44: Uncomment the URL parsing and adapter creation code - Line 47: Uncomment the adapter parameter in PrismaClient

  1. Set up your .env file.
  • Start by copying the .env.example file to a new file named .env. This file will store your local environment settings.
  • Database setup:
Option 1: Local MySQL (Recommended for Development)

The app automatically detects your database type based on DATABASE_URL. Choose your platform:

🍎 macOS 1. Install MySQL using Homebrew:

brew install mysql

2. Start MySQL service:

brew services start mysql

3. Create database:

mysql -u root -e "CREATE DATABASE earn_db"

4. Set DATABASE_URL in .env:

DATABASE_URL='mysql://root@localhost:3306/earn_db'

🪟 Windows 1. Option A: Using MySQL Installer (Recommended for beginners) - Download MySQL Community Server Installer - Run the installer and choose "Developer Default" - Set root password when prompted (remember this!) - Complete installation 2. Option B: Using Package Manager

# Using Chocolatey
  choco install mysql

# OR using winget winget install Oracle.MySQL

3. Start MySQL (if not already running): - Open "Services" app (Win + R, type services.msc) - Find "MySQL" service and start it

OR via command line:

net start MySQL

4. Create database:

mysql -u root -p -e "CREATE DATABASE earn_db"

Enter your root password when prompted.

5. Set DATABASE_URL in .env:

DATABASE_URL='mysql://root:YOUR_PASSWORD@localhost:3306/earn_db'
Replace YOUR_PASSWORD with your MySQL root password.

🐧 Linux

Ubuntu/Debian:

# Install MySQL
  sudo apt update
  sudo apt install mysql-server

# Start MySQL service sudo systemctl start mysql sudo systemctl enable mysql

# Secure installation (optional but recommended) sudo mysql_secure_installation

# Create database sudo mysql -e "CREATE DATABASE earn_db"

# Create user (optional, for better security) sudo mysql -e "CREATE USER 'earnuser'@'localhost' IDENTIFIED BY 'your_password';" sudo mysql -e "GRANT ALL PRIVILEGES ON earn_db.* TO 'earnuser'@'localhost';" sudo mysql -e "FLUSH PRIVILEGES;"

Fedora/RHEL/CentOS:

# Install MySQL
  sudo dnf install mysql-server  # or 'yum' for older versions

# Start MySQL service sudo systemctl start mysqld sudo systemctl enable mysqld

# Create database sudo mysql -e "CREATE DATABASE earn_db"

Set DATABASE_URL in .env:

# If using root:
  DATABASE_URL='mysql://root@localhost:3306/earn_db'

# If you created a user: DATABASE_URL='mysql://earnuser:your_password@localhost:3306/earn_db'

After setting up MySQL, generate Prisma client:

npx prisma generate && npx prisma db push

Option 2: Cloud MySQL Database

If you prefer not to run MySQL locally, you can use cloud services (all have free tiers): - railway Setup MySQL with Railway - render Setup MySQL with Render - Setup MySQL with PlanetScale

Then set DATABASE_URL in .env with the connection string from your cloud provider.

- Create a new privy app, Client Side Web App - Add env variables NEXT_PUBLIC_PRIVY_APP_ID and PRIVY_APP_SECRET - Update the setting to include server side environment - Add env variable PRIVY_VERIFICATION_KEY (hidden under 'Verify with key instead' in Privy App settings) - Enable Solana External Wallets and Google social sign in - - To obtain your RESEND_API_KEY, visit the Resend dashboard. - To obtain your CLOUDINARY_* API keys, visit the Cloudinary dashboard. - Visit portal.jup.ag to generate a free API key - Add JUPITER_API_KEY to your .env file - Required for token price fetching functionality
  • Set up Solana RPC WebSocket URL:
- Set NEXT_PUBLIC_RPC_WS_URL in your .env file. This is required for wallet-related features. - You can use a public RPC endpoint or get one from providers like Helius, Triton.one.
NEXT_PUBLIC_RPC_WS_URL='wss://api.mainnet-beta.solana.com?api-key=abc-xyz'
> Note: Public endpoints have rate limits. For development, consider using devnet: wss://api.devnet.solana.com

Facing an issue? Please feel free to reach out to Jill or Abhishek on Twitter.

  1. Run the development server
pnpm dev

⭐Contributing

We welcome contributions from everyone! Whether it's submitting an issue, a pull request, or suggesting new ideas, your input is highly valued. Check out our contributing guide for guidelines on how to proceed.

Facing an issue? Please feel free to reach out to Jill or Abhishek on Twitter.

Why should you contribute to Earn?

  • Consistent, good-quality contributions will earn you contributor status in the Superteam of your preference! Contributors get special access to channels on Discord, preferential entry to events, and is a great stepping stone to becoming a Superteam member.
  • Get XP if you're already a Superteam Member or Contributor
  • Unwavering love and support from the Superteam Earn team!

Contributors

📊Repo Activity

Chat with me