# gitcoinco/web architecture

> Architecture diagram of the GitHub repository gitcoinco/web, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gitcoinco/web
- Repository: https://github.com/gitcoinco/web

## Overview

Gitcoin is a Django platform for funding and discovering open-source work, with blockchain-backed transactions and GitHub integration. The main user journey is to post or find a funded issue, submit or accept work, and handle payment through the Web3 bridge. Grants and contributions, tips and Kudos, the HTTPS API, and GitcoinBot are distinct capabilities. The graph reflects the README and available paths; detailed wiring beyond the sampled source is not assumed.

Main entry points: [`app/app/urls.py`](https://github.com/gitcoinco/web/blob/master/app/app/urls.py) (Django application), [`app/dashboard/models.py`](https://github.com/gitcoinco/web/blob/master/app/dashboard/models.py) (Domain records), [`app/dashboard/views.py`](https://github.com/gitcoinco/web/blob/master/app/dashboard/views.py) (Work explorer), [`app/grants/views.py`](https://github.com/gitcoinco/web/blob/master/app/grants/views.py) (Grant workflows)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_django["Django application<br/>[urls.py]"]
  node_models[("Domain records<br/>[models.py]")]
  node_api["HTTPS API<br/>[views_api_vc.py]"]
end

subgraph group_work["Funded work"]
  node_dashboard["Work explorer<br/>[views.py]"]
  node_search["Search index<br/>[views.py]"]
  node_bounty["Bounty workflows<br/>[views.py]"]
  node_gitdata["GitHub integration<br/>[utils.py]"]
end

subgraph group_funding["Funding and identity"]
  node_grants["Grant workflows<br/>[views.py]"]
  node_grantingest["Grant ingestion<br/>[ingest.py]"]
  node_tips["Tips<br/>[tip_views.py]"]
  node_kudos["Kudos<br/>[views.py]"]
  node_economy["Token economy<br/>[models.py]"]
end

subgraph group_integrations["External integrations"]
  node_bot["GitcoinBot<br/>[views.py]"]
  node_ethereum{{"Ethereum contracts"}}
  node_github{{"GitHub"}}
  node_web3["Web3 bridge<br/>[ingest.py]"]
end

node_developer(("Contributor"))
node_owner(("Repository owner"))

node_developer -->|"uses"| node_django
node_owner -->|"uses"| node_django
node_django -->|"routes requests"| node_dashboard
node_dashboard -->|"searches work"| node_search
node_dashboard -->|"serves bounty flow"| node_bounty
node_bounty -->|"records work"| node_models
node_gitdata -.->|"integrates"| node_github
node_django -->|"routes requests"| node_grants
node_grants -->|"records grants"| node_models
node_grants -->|"bridges contributions"| node_web3
node_grantingest -->|"reads transactions"| node_ethereum
node_grantingest -->|"records contributions"| node_models
node_django -->|"routes requests"| node_tips
node_django -->|"routes requests"| node_kudos
node_kudos -->|"uses token data"| node_economy
node_api -->|"serves records"| node_models
node_github -.->|"sends issue events"| node_bot
node_bot -.->|"creates funded issues"| node_bounty

click node_django "https://github.com/gitcoinco/web/blob/master/app/app/urls.py"
click node_dashboard "https://github.com/gitcoinco/web/blob/master/app/dashboard/views.py"
click node_search "https://github.com/gitcoinco/web/blob/master/app/search/views.py"
click node_bounty "https://github.com/gitcoinco/web/blob/master/app/dashboard/views.py"
click node_gitdata "https://github.com/gitcoinco/web/blob/master/app/git/utils.py"
click node_grants "https://github.com/gitcoinco/web/blob/master/app/grants/views.py"
click node_grantingest "https://github.com/gitcoinco/web/blob/master/app/grants/ingest.py"
click node_tips "https://github.com/gitcoinco/web/blob/master/app/dashboard/tip_views.py"
click node_kudos "https://github.com/gitcoinco/web/blob/master/app/kudos/views.py"
click node_economy "https://github.com/gitcoinco/web/blob/master/app/economy/models.py"
click node_models "https://github.com/gitcoinco/web/blob/master/app/dashboard/models.py"
click node_api "https://github.com/gitcoinco/web/blob/master/app/grants/views_api_vc.py"
click node_bot "https://github.com/gitcoinco/web/blob/master/app/gitcoinbot/views.py"
click node_web3 "https://github.com/gitcoinco/web/blob/master/app/grants/ingest.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_django,node_models,node_api toneBlue
class node_dashboard,node_search,node_bounty,node_gitdata toneAmber
class node_grants,node_grantingest,node_tips,node_kudos,node_economy toneMint
class node_bot,node_ethereum,node_github,node_web3 toneRose
class node_developer,node_owner toneIndigo
```

## Components

### Web application

- [Django application](https://github.com/gitcoinco/web/blob/master/app/app/urls.py): `app/app/urls.py`
- [Domain records](https://github.com/gitcoinco/web/blob/master/app/dashboard/models.py): `app/dashboard/models.py`
- [HTTPS API](https://github.com/gitcoinco/web/blob/master/app/grants/views_api_vc.py): `app/grants/views_api_vc.py`

### Funded work

- [Work explorer](https://github.com/gitcoinco/web/blob/master/app/dashboard/views.py): `app/dashboard/views.py`
- [Search index](https://github.com/gitcoinco/web/blob/master/app/search/views.py): `app/search/views.py`
- [Bounty workflows](https://github.com/gitcoinco/web/blob/master/app/dashboard/views.py): `app/dashboard/views.py`
- [GitHub integration](https://github.com/gitcoinco/web/blob/master/app/git/utils.py): `app/git/utils.py`

### Funding and identity

- [Grant workflows](https://github.com/gitcoinco/web/blob/master/app/grants/views.py): `app/grants/views.py`
- [Grant ingestion](https://github.com/gitcoinco/web/blob/master/app/grants/ingest.py): `app/grants/ingest.py`
- [Tips](https://github.com/gitcoinco/web/blob/master/app/dashboard/tip_views.py): `app/dashboard/tip_views.py`
- [Kudos](https://github.com/gitcoinco/web/blob/master/app/kudos/views.py): `app/kudos/views.py`
- [Token economy](https://github.com/gitcoinco/web/blob/master/app/economy/models.py): `app/economy/models.py`

### External integrations

- [GitcoinBot](https://github.com/gitcoinco/web/blob/master/app/gitcoinbot/views.py): `app/gitcoinbot/views.py`
- **Ethereum contracts**
- **GitHub**
- [Web3 bridge](https://github.com/gitcoinco/web/blob/master/app/grants/ingest.py): `app/grants/ingest.py`

### Other components

- **Contributor**
- **Repository owner**

## Connections

- Contributor → Django application: uses
- Repository owner → Django application: uses
- Django application → Work explorer: routes requests
- Work explorer → Search index: searches work
- Work explorer → Bounty workflows: serves bounty flow
- Bounty workflows → Domain records: records work
- GitHub integration → GitHub: integrates
- Django application → Grant workflows: routes requests
- Grant workflows → Domain records: records grants
- Grant workflows → Web3 bridge: bridges contributions
- Grant ingestion → Ethereum contracts: reads transactions
- Grant ingestion → Domain records: records contributions
- Django application → Tips: routes requests
- Django application → Kudos: routes requests
- Kudos → Token economy: uses token data
- HTTPS API → Domain records: serves records
- GitHub → GitcoinBot: sends issue events
- GitcoinBot → Bounty workflows: creates funded issues
