Skip to content

algora-io/algora

Repository files navigation

Homepage

Hire the top 1% open source engineers


Website · Docs · Discord · Twitter · YouTube · Issues

Algora connects companies and developers for full-time and contract work.

This codebase consists of the following:

  • a web app to publish & manage SWE jobs, contracts & bounties
  • a GitHub app to create bounties & reward tips on issues and PRs
  • a payment processor to handle payouts, compliance & 1099s

OSS communities and closed source teams can self-host or join Algora.io to accomplish the following:

Use with your Benefit
open source community reward open source contributors & maintainers
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.io, hosted by Algora Public Benefit Corporation, extends functionalities including:

  • developers' top OSS contributions are automatically displayed on their Algora profiles
  • companies' job applicants are automatically screened & ranked for OSS contributions
  • companies and developers are automatically matched for full-time & contract work based on tech/budget/location preferences

Algora.io is a complete solution for sourcing, screening, interviewing & onboarding engineers to your team.

Hiring proces Benefit
sourcing publish jobs to 50K+ developers, access matches
screening auto screen job applicants for OSS contributions
interviewing trial your candidates using bounties & contracts
onboarding contribute-first hires are productive on day 1
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 Embed
    • Embeddable profile for GitHub and personal websites
    • One-click bounty and contract sharing
  • Apply Embed
    • One-click apply embed for careers pages
  • New payment/payout options
    • Alipay, Wise, crypto etc.
  • Localization of platform & matches
  • 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 git@github.com: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.