Skip to content

Commit 9ad6340

Browse files
committed
Merge branch 'main' of github.com:algora-io/algora into feat/contracts
2 parents 643e586 + 23ec178 commit 9ad6340

File tree

7 files changed

+111
-39
lines changed

7 files changed

+111
-39
lines changed

README.md

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
</p>
2727

28-
Algora exists to reduce the friction in hiring, collaborating and paying open source developers.
28+
Algora exists to reduce the friction in hiring and collaborating with open source developers.
2929

3030
Algora combines:
3131

@@ -104,17 +104,36 @@ Algora combines:
104104
</tr>
105105
</table>
106106

107+
<!-- ROADMAP -->
108+
109+
## Roadmap & community requests
110+
111+
- Profile enhancements
112+
- Highlighting top non-bounty open source contributions
113+
- Embeddable profile for GitHub and personal websites
114+
- One-click bounty and contract sharing
115+
- Hiring platform features
116+
- Job posting and application management
117+
- Developer ranking system using our ELO algorithm based on OSS contributions
118+
- Technical interview tools with bounties and contract work
119+
- Customizable career page embeds for seamless integration
120+
- New payment/payout options
121+
- Alipay, Wise, crypto etc.
122+
- New workflow integrations
123+
- GitLab, Linear, Plane, Cursor etc.
124+
- New clients
125+
- Mobile, desktop, CLI
126+
- Crowdfunding enhancements
127+
107128
<!-- GETTING STARTED -->
108129

109130
## Getting Started
110131

111-
To get a local copy up and running, follow these steps.
112-
113132
### Prerequisites
114133

115134
The easiest way to get up and running is to [install](https://docs.docker.com/get-docker/) and use Docker for running Postgres.
116135

117-
Make sure Docker, Elixir, Erlang and Node.js are all installed on your development machine. The [.tool-versions](https://github.com/algora-io/algora/blob/main/.tool-versions) file is available to use with [asdf](https://github.com/asdf-vm/asdf) or similar tools.
136+
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`](https://github.com/asdf-vm/asdf) from the project root.
118137

119138
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.
120139

@@ -126,37 +145,31 @@ We also recommend using [direnv](https://github.com/direnv/direnv) to load envir
126145
git clone [email protected]:algora-io/algora.git && cd algora
127146
```
128147

129-
2. Install Elixir and Erlang/OTP
130-
131-
```sh
132-
asdf install
133-
```
134-
135-
3. Initialize and load `.env`
148+
2. Initialize and load `.env`
136149

137150
```sh
138151
cp .env.example .env && direnv allow .env
139152
```
140153

141-
4. Start a container with latest postgres
154+
3. Start a container with latest postgres
142155

143156
```sh
144157
make postgres
145158
```
146159

147-
5. Install and setup dependencies
160+
4. Install and setup dependencies
148161

149162
```sh
150163
make install
151164
```
152165

153-
6. Start the web server inside IEx
166+
5. Start the web server inside IEx
154167

155168
```sh
156169
make server
157170
```
158171

159-
7. (Optional) Watch for file changes and auto reload IEx shell in a separate terminal
172+
6. (Optional) Watch for file changes and auto reload IEx shell in a separate terminal
160173

161174
```sh
162175
make watch
@@ -166,24 +179,6 @@ We also recommend using [direnv](https://github.com/direnv/direnv) to load envir
166179

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

169-
#### Tunnel
170-
171-
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 to get up and running is to use a tool like [ngrok](https://ngrok.com/) or [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/).
172-
173-
Here's how you can setup a re-usable named tunnel on your own domain name so you have a consistent URL:
174-
175-
```sh
176-
cloudflared tunnel login
177-
cloudflared tunnel create local
178-
cloudflared tunnel route dns local http://local.yourdomain.com
179-
```
180-
181-
Once you have setup your tunnel, add it to your `.env` file and run `direnv allow .env`.
182-
183-
```env
184-
CLOUDFLARE_TUNNEL="local"
185-
```
186-
187182
#### GitHub
188183

189184
[Register new GitHub app](https://github.com/settings/apps/new) and set
@@ -200,7 +195,7 @@ CLOUDFLARE_TUNNEL="local"
200195
- Read account email address
201196
- Events: issues, pull requests, issue comment, pull request review, pull request review comment
202197

203-
Once you have obtained your client ID and secret, add them to your `.env` file.
198+
Once you have obtained your client ID and secret, add them to your `.env` file and run `direnv allow .env`.
204199

205200
```env
206201
GITHUB_CLIENT_ID=""
@@ -232,3 +227,23 @@ AWS_ACCESS_KEY_ID=""
232227
AWS_SECRET_ACCESS_KEY=""
233228
BUCKET_NAME=""
234229
```
230+
231+
#### Tunnel
232+
233+
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/).
234+
235+
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:
236+
237+
```sh
238+
cloudflared tunnel login
239+
cloudflared tunnel create local
240+
cloudflared tunnel route dns local http://local.yourdomain.com
241+
```
242+
243+
And then add it to your `.env` file:
244+
245+
```env
246+
CLOUDFLARE_TUNNEL="local"
247+
```
248+
249+
If you're using another service, make sure to start the tunnel manually in another terminal.

lib/algora/bounties/bounties.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,7 +1188,7 @@ defmodule Algora.Bounties do
11881188
from([b, r: r] in query, where: b.owner_id == ^owner_id or r.user_id == ^owner_id)
11891189

11901190
{:owner_handle, owner_handle}, query ->
1191-
from([b, o: o] in query, where: o.handle == ^owner_handle)
1191+
from([b, o: o, ro: ro] in query, where: o.handle == ^owner_handle or ro.handle == ^owner_handle)
11921192

11931193
{:status, status}, query ->
11941194
query = where(query, [b], b.status == ^status)
@@ -1224,7 +1224,7 @@ defmodule Algora.Bounties do
12241224
end
12251225

12261226
query =
1227-
case criteria[:owner_id] do
1227+
case criteria[:owner_id] || criteria[:owner_handle] do
12281228
nil ->
12291229
where(query, [b, o: o], (b.visibility == :public and o.featured == true) or b.visibility == :exclusive)
12301230

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
defmodule AlgoraWeb.Components.Banner do
2+
@moduledoc false
3+
use AlgoraWeb.Component
4+
use AlgoraWeb, :verified_routes
5+
6+
import AlgoraWeb.CoreComponents
7+
8+
alias AlgoraWeb.Constants
9+
10+
def banner(assigns) do
11+
~H"""
12+
<div class="group flex items-center gap-x-6 bg-emerald-600 px-6 py-2.5 sm:px-3.5 sm:before:flex-1">
13+
<p class="text-sm/6 text-foreground">
14+
<.link
15+
href={Constants.get(:github_repo_url)}
16+
rel="noopener"
17+
target="_blank"
18+
class="font-medium"
19+
>
20+
<strong class="font-semibold">🎉 Algora is now open source!</strong><svg
21+
viewBox="0 0 2 2"
22+
class="mx-2 inline size-1 fill-current"
23+
aria-hidden="true"
24+
><circle cx="1" cy="1" r="1" /></svg>Give us a star
25+
<.icon
26+
name="tabler-arrow-right"
27+
class="size-4 group-hover:translate-x-1.5 transition-transform"
28+
/>
29+
</.link>
30+
</p>
31+
<div class="flex flex-1 justify-end">
32+
<%!-- <button type="button" class="-m-3 p-3 focus-visible:outline-offset-[-4px]">
33+
<span class="sr-only">Dismiss</span>
34+
<svg
35+
class="size-5 text-white"
36+
viewBox="0 0 20 20"
37+
fill="currentColor"
38+
aria-hidden="true"
39+
data-slot="icon"
40+
>
41+
<path d="M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" />
42+
</svg>
43+
</button> --%>
44+
</div>
45+
</div>
46+
"""
47+
end
48+
end

lib/algora_web/components/header.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ defmodule AlgoraWeb.Components.Header do
1919
def header(assigns) do
2020
~H"""
2121
<header class="absolute inset-x-0 top-0 z-50">
22-
<nav class="mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8" aria-label="Global">
22+
<AlgoraWeb.Components.Banner.banner />
23+
<nav
24+
class="-mt-4 mx-auto flex max-w-7xl items-center justify-between p-6 lg:px-8"
25+
aria-label="Global"
26+
>
2327
<div class="flex">
2428
<.wordmark class="h-8 w-auto text-foreground" />
2529
</div>

lib/algora_web/components/layouts/user.html.heex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@
348348
<% end %>
349349
<% end %>
350350

351-
<div :if={!@current_user && !assigns[:screenshot?]} class="relative pt-16">
351+
<div :if={!@current_user && !assigns[:screenshot?]} class="relative pt-24">
352352
<.flash_group flash={@flash} />
353353
<AlgoraWeb.Components.Header.header />
354354
{@inner_content}

lib/algora_web/live/user/profile_live.ex

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ defmodule AlgoraWeb.User.ProfileLive do
110110
<%= for %{transaction: transaction, ticket: ticket, project: project} <- @transactions do %>
111111
<tr class="border-b transition-colors hover:bg-muted/10">
112112
<td class="p-4 align-middle">
113-
<div class="flex items-center gap-4">
113+
<div class="flex items-start gap-4">
114114
<.link navigate={User.url(project)}>
115115
<span class="relative flex h-14 w-14 shrink-0 overflow-hidden rounded-xl">
116116
<img
@@ -161,6 +161,11 @@ defmodule AlgoraWeb.User.ProfileLive do
161161
</div>
162162
</div>
163163
</.maybe_link>
164+
<div :if={ticket.repository && ticket.repository.tech_stack}>
165+
<%= for tech <- ticket.repository.tech_stack do %>
166+
<.badge>{tech}</.badge>
167+
<% end %>
168+
</div>
164169
</div>
165170
</div>
166171
</td>

priv/static/images/og/home.png

109 KB
Loading

0 commit comments

Comments
 (0)