# raja-vardhan/fabric-auction-simple architecture

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

- Interactive diagram: https://gitdiagram.com/raja-vardhan/fabric-auction-simple
- Repository: https://github.com/raja-vardhan/fabric-auction-simple

## Overview

Fabric Auction Simple is a React-based blind-auction application backed by a Node.js API and Hyperledger Fabric chaincode. A participant creates an auction, bidders create private bids and submit hashes, the seller closes bidding, owners reveal bids, and the seller ends the auction after organizations agree on a winner and clearing price. The UI polls auction state and supports seat switching. README capabilities clarify privacy and endorsement behavior; some server and chaincode internals were not sampled, so uncertain internal links are omitted.

Main entry points: [`auction-application/auction-ui/src/App.tsx`](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/App.tsx) (Auction board), [`auction-chaincode/contract/bid.go`](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/bid.go) (Bid operations), [`auction-application/auction-ui/src/api/client.ts`](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/api/client.ts) (API client), [`auction-application/server/index.js`](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/index.js) (HTTP routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Auction interface"]
  node_app["Auction board<br/>[App.tsx]"]
  node_seat["Seat context<br/>[SeatContext.tsx]"]
  node_auctionpoll["Auction polling<br/>[useAuction.ts]"]
  node_listpoll["Auction-list polling<br/>[useAuctions.ts]"]
  node_action["Action state<br/>[useAction.ts]"]
  node_board["Auction controls<br/>[PlayerSeat.tsx]"]
  node_ledgerui["Public ledger view<br/>[PublicLedger.tsx]"]
  node_lifecycle["Lifecycle display"]
end

subgraph group_api["Application API"]
  node_client["API client<br/>[client.ts]"]
  node_routes["HTTP routes<br/>[index.js]"]
  node_fabric["Fabric adapter<br/>[fabric.js]"]
  node_seats["Seat roster<br/>[seats.js]"]
end

subgraph group_contract["Fabric contract"]
  node_runtime["Chaincode runtime<br/>[main.go]"]
  node_contractapi["Auction contract"]
  node_auctionlogic["Auction operations<br/>[auction.go]"]
  node_bidlogic["Bid operations<br/>[bid.go]"]
  node_utils["Contract utilities<br/>[utils.go]"]
end

subgraph group_state["Auction state"]
  node_publicledger[("Channel ledger")]
  node_privatedata[("Organization private data")]
end

node_participant(("Participant"))
node_fabricnet{{"Fabric network"}}

node_participant -->|"uses"| node_app
node_app -->|"reads seat"| node_seat
node_app -->|"polls state"| node_auctionpoll
node_app -->|"polls list"| node_listpoll
node_app -->|"renders controls"| node_board
node_app -->|"renders ledger"| node_ledgerui
node_app -->|"renders status"| node_lifecycle
node_board -->|"runs actions"| node_action
node_auctionpoll -->|"fetches auction"| node_client
node_listpoll -->|"fetches list"| node_client
node_seat -->|"loads seats"| node_client
node_client -->|"HTTP requests"| node_routes
node_routes -->|"calls operations"| node_fabric
node_routes -->|"reads roster"| node_seats
node_fabric -->|"connects to"| node_fabricnet
node_fabricnet -->|"executes chaincode"| node_runtime
node_runtime -->|"starts contract"| node_contractapi
node_contractapi -->|"handles auctions"| node_auctionlogic
node_contractapi -->|"handles bids"| node_bidlogic
node_auctionlogic -->|"uses helpers"| node_utils
node_bidlogic -->|"uses helpers"| node_utils
node_auctionlogic -->|"reads and writes"| node_publicledger
node_bidlogic -->|"records bid hashes"| node_publicledger
node_bidlogic -->|"stores and verifies bids"| node_privatedata

click node_app "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/App.tsx"
click node_seat "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/state/SeatContext.tsx"
click node_auctionpoll "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/hooks/useAuction.ts"
click node_listpoll "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/hooks/useAuctions.ts"
click node_action "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/hooks/useAction.ts"
click node_board "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/components/PlayerSeat.tsx"
click node_ledgerui "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/components/PublicLedger.tsx"
click node_lifecycle "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/components/LifecycleStepper.tsx"
click node_client "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/api/client.ts"
click node_routes "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/index.js"
click node_fabric "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/fabric.js"
click node_seats "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/seats.js"
click node_runtime "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/main.go"
click node_contractapi "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/auction-contract.go"
click node_auctionlogic "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/auction.go"
click node_bidlogic "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/bid.go"
click node_utils "https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/utils.go"

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_app,node_seat,node_auctionpoll,node_listpoll,node_action,node_board,node_ledgerui,node_lifecycle toneBlue
class node_client,node_routes,node_fabric,node_seats toneAmber
class node_runtime,node_contractapi,node_auctionlogic,node_bidlogic,node_utils toneMint
class node_publicledger,node_privatedata toneRose
class node_participant,node_fabricnet toneIndigo
```

## Components

### Auction interface

- [Auction board](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/App.tsx): `auction-application/auction-ui/src/App.tsx`
- [Seat context](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/state/SeatContext.tsx): `auction-application/auction-ui/src/state/SeatContext.tsx`
- [Auction polling](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/hooks/useAuction.ts): `auction-application/auction-ui/src/hooks/useAuction.ts`
- [Auction-list polling](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/hooks/useAuctions.ts): `auction-application/auction-ui/src/hooks/useAuctions.ts`
- [Action state](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/hooks/useAction.ts): `auction-application/auction-ui/src/hooks/useAction.ts`
- [Auction controls](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/components/PlayerSeat.tsx): `auction-application/auction-ui/src/components/PlayerSeat.tsx`
- [Public ledger view](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/components/PublicLedger.tsx): `auction-application/auction-ui/src/components/PublicLedger.tsx`
- [Lifecycle display](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/components/LifecycleStepper.tsx): `auction-application/auction-ui/src/components/LifecycleStepper.tsx`

### Application API

- [API client](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/auction-ui/src/api/client.ts): `auction-application/auction-ui/src/api/client.ts`
- [HTTP routes](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/index.js): `auction-application/server/index.js`
- [Fabric adapter](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/fabric.js): `auction-application/server/fabric.js`
- [Seat roster](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-application/server/seats.js): `auction-application/server/seats.js`

### Fabric contract

- [Chaincode runtime](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/main.go): `auction-chaincode/main.go`
- [Auction contract](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/auction-contract.go): `auction-chaincode/contract/auction-contract.go`
- [Auction operations](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/auction.go): `auction-chaincode/contract/auction.go`
- [Bid operations](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/bid.go): `auction-chaincode/contract/bid.go`
- [Contract utilities](https://github.com/raja-vardhan/fabric-auction-simple/blob/main/auction-chaincode/contract/utils.go): `auction-chaincode/contract/utils.go`

### Auction state

- **Channel ledger**
- **Organization private data**

### Other components

- **Participant**
- **Fabric network**

## Connections

- Participant → Auction board: uses
- Auction board → Seat context: reads seat
- Auction board → Auction polling: polls state
- Auction board → Auction-list polling: polls list
- Auction board → Auction controls: renders controls
- Auction board → Public ledger view: renders ledger
- Auction board → Lifecycle display: renders status
- Auction controls → Action state: runs actions
- Auction polling → API client: fetches auction
- Auction-list polling → API client: fetches list
- Seat context → API client: loads seats
- API client → HTTP routes: HTTP requests
- HTTP routes → Fabric adapter: calls operations
- HTTP routes → Seat roster: reads roster
- Fabric adapter → Fabric network: connects to
- Fabric network → Chaincode runtime: executes chaincode
- Chaincode runtime → Auction contract: starts contract
- Auction contract → Auction operations: handles auctions
- Auction contract → Bid operations: handles bids
- Auction operations → Contract utilities: uses helpers
- Bid operations → Contract utilities: uses helpers
- Auction operations → Channel ledger: reads and writes
- Bid operations → Channel ledger: records bid hashes
- Bid operations → Organization private data: stores and verifies bids
