Skip to content

algora-io/algora

Repository files navigation

Homepage

Algora

The open source Upwork for engineers
Website · Docs · Discord · Twitter · YouTube · Issues

Algora exists to reduce the friction in hiring and collaborating with open source developers.

Algora combines:

  • a GitHub app to reward bounties and tips on issues/PRs
  • a payment processor to handle payouts, compliance & 1099s
  • a web app for sharing bounties, contracts and jobs
  • a history of transactions, invoices and peer reviews
  • a marketplace to meet and collaborate with top contributors
Use with your Benefit
open source community fund, solve and reward bounties on GitHub issues
contractors manage work and complete outcome based payments
job candidates collaborate on paid projects for interviews
teammates run an internal bounty program for fun and profit
Algora community experts get work done and grow your team
User Dashboard Organization Dashboard
Global Payments Pending Payments
Bounty Board Crowdfund
User Profile Embed Profile
Create Custom Bounty View Custom Bounty
Create Tip Step 1 Create Tip Step 2

Roadmap & community requests

  • Profile enhancements
    • Highlighting top non-bounty open source contributions
    • Embeddable profile for GitHub and personal websites
    • One-click bounty and contract sharing
  • Hiring platform features
    • Job posting and application management
    • Developer ranking system using our ELO algorithm based on OSS contributions
    • Technical interview tools with bounties and contract work
    • Customizable career page embeds for seamless integration
  • New payment/payout options
    • Alipay, Wise, crypto etc.
  • New workflow integrations
    • GitLab, Linear, Plane, Cursor etc.
  • New clients
    • Mobile, desktop, CLI
  • Crowdfunding enhancements

Getting Started

Prerequisites

The easiest way to get up and running is to install and use Docker for running Postgres.

Make sure Docker, Elixir, Erlang and Node.js are all installed on your development machine. You can install Elixir and Erlang/OTP by running asdf install from the project root.

We also recommend using direnv to load environment variables and entr to watch for file changes.

Setting up the project

  1. Clone the repo and go to the project folder

    git clone [email protected]:algora-io/algora.git && cd algora
  2. Initialize and load .env

    cp .env.example .env && direnv allow .env
  3. Start a container with latest postgres

    make postgres
  4. Install and setup dependencies

    make install
  5. Start the web server inside IEx

    make server
  6. (Optional) Watch for file changes and auto reload IEx shell in a separate terminal

    make watch

Setting up external services

Some features of Algora rely on external services. If you're not planning on using these features, feel free to skip setting them up.

GitHub

Register new GitHub app and set

Once you have obtained your client ID and secret, add them to your .env file and run direnv allow .env.

GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
GITHUB_APP_HANDLE=""
GITHUB_APP_ID=""
GITHUB_WEBHOOK_SECRET=""
GITHUB_PRIVATE_KEY=""

Stripe

Create new Stripe account to obtain your secrets and add them to your .env file.

STRIPE_PUBLISHABLE_KEY=""
STRIPE_SECRET_KEY=""
STRIPE_WEBHOOK_SECRET=""

Object Storage

To host static assets, set up a public bucket on your preferred S3-compatible storage service and add the following credentials to your .env file:

AWS_ENDPOINT_URL_S3=""
AWS_REGION=""
AWS_ACCESS_KEY_ID=""
AWS_SECRET_ACCESS_KEY=""
BUCKET_NAME=""

Tunnel

To receive webhooks from GitHub or Stripe on your local machine, you'll need a way to expose your local server to the internet. The easiest way is to use a service like Cloudflare Tunnel or ngrok.

If you'd like to utilize our Cloudflare Tunnel GenServer to automatically run a tunnel when you start the app, you'll need to set up a named tunnel on your own domain:

cloudflared tunnel login
cloudflared tunnel create local
cloudflared tunnel route dns local http://local.yourdomain.com

And then add it to your .env file:

CLOUDFLARE_TUNNEL="local"

If you're using another service, make sure to start the tunnel manually in another terminal.