Homepage

Algora

Hire the top 1% open source engineers.
Learn more »

Website · Twitter · YouTube · Issues

Checks License Hacker News

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](https://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](https://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](https://algora.io)** is a complete solution for sourcing, screening, interviewing & onboarding engineers to your team. | Hiring process | 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](https://docs.docker.com/get-docker/) 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 with [ASDF](https://asdf-vm.com/) from the project root as follows: 1. [Install ASDF](https://asdf-vm.com/guide/getting-started.html) 2. `asdf plugin add erlang` 3. `asdf plugin add elixir` 4. `asdf plugin add pnpm` 5. `asdf plugin add nodejs` 6. `asdf install` We also recommend using [direnv](https://github.com/direnv/direnv) to load environment variables and [entr](https://github.com/eradman/entr) to watch for file changes. ### Setting up the project 1. Clone the repo and go to the project folder ```sh git clone git@github.com:algora-io/algora.git && cd algora ``` 2. Initialize and load `.env` ```sh cp .env.example .env && direnv allow .env ``` 3. Start a container with latest postgres ```sh make postgres ``` 4. Install and setup dependencies ```sh make install ``` 5. Start the web server inside IEx ```sh make server ``` 6. (Optional) Watch for file changes and auto reload IEx shell in a separate terminal ```sh 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](https://github.com/settings/apps/new) and set - Homepage URL: http://localhost:4000 - Callback URL: http://localhost:4000/callbacks/github/oauth - Setup URL: http://localhost:4000/callbacks/github/installation - Redirect on update: Yes - Webhook URL: https://[your-public-proxy]/webhooks/github (e.g. ngrok, Cloudflare Tunnel) - Secret: [generate new random string] - Permissions: - Read & write issues - Read & write pull requests - Read account email address - Events: issues, pull requests, issue comment, pull request review, pull request review comment Once you have obtained your client ID and secret, add them to your `.env` file and run `direnv allow .env`. ```env GITHUB_CLIENT_ID="" GITHUB_CLIENT_SECRET="" GITHUB_APP_HANDLE="" GITHUB_APP_ID="" GITHUB_WEBHOOK_SECRET="" GITHUB_PRIVATE_KEY="" ``` #### Stripe [Create new Stripe account](https://dashboard.stripe.com/register) to obtain your secrets and add them to your `.env` file. ```env 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: ```env 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](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) or [ngrok](https://ngrok.com/). If you'd like to utilize our Cloudflare Tunnel [GenServer](https://github.com/algora-io/algora/blob/main/lib/algora/integrations/tunnel.ex) to automatically run a tunnel when you start the app, you'll need to set up a named tunnel on your own domain: ```sh cloudflared tunnel login cloudflared tunnel create local cloudflared tunnel route dns local http://local.yourdomain.com ``` And then add it to your `.env` file: ```env CLOUDFLARE_TUNNEL="local" ``` If you're using another service, make sure to start the tunnel manually in another terminal.