# b4rt0n1/blockchain_final architecture

> Architecture diagram of the GitHub repository b4rt0n1/blockchain_final, 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/b4rt0n1/blockchain_final
- Repository: https://github.com/b4rt0n1/blockchain_final

## Overview

This is an all-or-nothing crowdfunding dapp: creators publish campaigns, backers contribute, and after the deadline campaigns are finalized as successful or failed; successful backers claim proportional token rewards, while failed backers refund ETH. The browser UI connects through MetaMask and submits transactions to the deployed contracts. The README documents the contract stages and reward-token permissions; sampled frontend code confirms campaign reads and transaction calls. Contract internals were not sampled, so edges reflect documented behavior rather than inspected implementation details.

Main entry points: [`frontend/app.js`](https://github.com/b4rt0n1/blockchain_final/blob/main/frontend/app.js) (Campaign interface), [`contracts/KickstarterCrowdfunding.sol`](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol) (Campaign operations), [`contracts/RewardToken.sol`](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/RewardToken.sol) (Reward token), [`frontend/config.json`](https://github.com/b4rt0n1/blockchain_final/blob/main/frontend/config.json) (Contract addresses)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser app"]
  node_ui["Campaign interface<br/>[app.js]"]
  node_config["Contract addresses<br/>[config.json]"]
end

subgraph group_contracts["On-chain contracts"]
  node_campaign["Campaign operations"]
  node_campaign_state[("Campaign state")]
  node_creation["Campaign creation"]
  node_contribution["Contributions"]
  node_finalization["Outcome finalization"]
  node_refund["Failed refunds"]
  node_claim["Reward claims"]
  node_token["Reward token<br/>[RewardToken.sol]"]
end

subgraph group_chain["External network"]
  node_wallet["MetaMask wallet"]
  node_network["Sepolia network"]
end

node_user(("Creator or backer"))

node_user -->|"uses"| node_ui
node_ui -->|"loads addresses"| node_config
node_ui -->|"connects through"| node_wallet
node_ui -->|"reads balances"| node_network
node_ui -->|"reads campaigns"| node_campaign
node_ui -->|"submits creation"| node_creation
node_ui -->|"submits contribution"| node_contribution
node_ui -->|"submits finalization"| node_finalization
node_ui -->|"submits refund"| node_refund
node_ui -->|"submits claim"| node_claim
node_wallet -->|"signs transactions"| node_network
node_creation -->|"stores campaign"| node_campaign_state
node_contribution -->|"updates totals"| node_campaign_state
node_finalization -->|"records outcome"| node_campaign_state
node_refund -->|"clears contribution"| node_campaign_state
node_claim -->|"reads pending reward"| node_campaign_state
node_campaign -->|"reads campaign data"| node_campaign_state
node_campaign -->|"mints rewards"| node_token
node_creation -->|"executes via"| node_campaign
node_contribution -->|"executes via"| node_campaign
node_finalization -->|"executes via"| node_campaign
node_refund -->|"executes via"| node_campaign
node_claim -->|"executes via"| node_campaign
node_campaign -->|"deployed on"| node_network
node_token -->|"deployed on"| node_network

click node_ui "https://github.com/b4rt0n1/blockchain_final/blob/main/frontend/app.js"
click node_config "https://github.com/b4rt0n1/blockchain_final/blob/main/frontend/config.json"
click node_campaign "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_campaign_state "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_creation "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_contribution "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_finalization "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_refund "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_claim "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol"
click node_token "https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/RewardToken.sol"

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_ui,node_config toneBlue
class node_campaign,node_campaign_state,node_creation,node_contribution,node_finalization,node_refund,node_claim,node_token toneAmber
class node_wallet,node_network toneMint
class node_user toneIndigo
```

## Components

### Browser app

- [Campaign interface](https://github.com/b4rt0n1/blockchain_final/blob/main/frontend/app.js): `frontend/app.js`
- [Contract addresses](https://github.com/b4rt0n1/blockchain_final/blob/main/frontend/config.json): `frontend/config.json`

### On-chain contracts

- [Campaign operations](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Campaign state](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Campaign creation](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Contributions](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Outcome finalization](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Failed refunds](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Reward claims](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/KickstarterCrowdfunding.sol): `contracts/KickstarterCrowdfunding.sol`
- [Reward token](https://github.com/b4rt0n1/blockchain_final/blob/main/contracts/RewardToken.sol): `contracts/RewardToken.sol`

### External network

- **MetaMask wallet**
- **Sepolia network**

### Other components

- **Creator or backer**

## Connections

- Creator or backer → Campaign interface: uses
- Campaign interface → Contract addresses: loads addresses
- Campaign interface → MetaMask wallet: connects through
- Campaign interface → Sepolia network: reads balances
- Campaign interface → Campaign operations: reads campaigns
- Campaign interface → Campaign creation: submits creation
- Campaign interface → Contributions: submits contribution
- Campaign interface → Outcome finalization: submits finalization
- Campaign interface → Failed refunds: submits refund
- Campaign interface → Reward claims: submits claim
- MetaMask wallet → Sepolia network: signs transactions
- Campaign creation → Campaign state: stores campaign
- Contributions → Campaign state: updates totals
- Outcome finalization → Campaign state: records outcome
- Failed refunds → Campaign state: clears contribution
- Reward claims → Campaign state: reads pending reward
- Campaign operations → Campaign state: reads campaign data
- Campaign operations → Reward token: mints rewards
- Campaign creation → Campaign operations: executes via
- Contributions → Campaign operations: executes via
- Outcome finalization → Campaign operations: executes via
- Failed refunds → Campaign operations: executes via
- Reward claims → Campaign operations: executes via
- Campaign operations → Sepolia network: deployed on
- Reward token → Sepolia network: deployed on
