# nabilislam722/mintora architecture

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

- Interactive diagram: https://gitdiagram.com/nabilislam722/mintora
- Repository: https://github.com/nabilislam722/mintora

## Overview

Mintora is an NFT marketplace for Bitcoin L2 networks. Users browse collections and NFTs, inspect profiles and activity, and connect a wallet; creators can create listings and update profile media. The server exposes marketplace APIs backed by MongoDB, while collection synchronization and crawling populate marketplace data. Uploads use signed Cloudflare R2 transfers. The README documents adding NFT collections; some client hooks and server subsystems are unsampled, so uncertain wiring is omitted.

Main entry points: [`apps/client/src/App.jsx`](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/App.jsx) (App router), [`apps/client/src/lib/queryClient.js`](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/queryClient.js) (API query client), [`apps/server/models`](https://github.com/nabilislam722/mintora/tree/main/apps/server/models) (Marketplace models), [`apps/server/index.js`](https://github.com/nabilislam722/mintora/blob/main/apps/server/index.js) (HTTP server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Marketplace client"]
  node_app["App router<br/>[App.jsx]"]
  node_browse["Marketplace pages<br/>[Home.jsx]"]
  node_collections["Collection views<br/>[Collections.jsx]"]
  node_nftdetails["NFT details<br/>[NftDetails.jsx]"]
  node_profile["Profiles and settings<br/>[Profile.jsx]"]
  node_create["NFT creation<br/>[Create.jsx]"]
  node_activity["Activity feed<br/>[activity.jsx]"]
  node_clientapi["API query client<br/>[queryClient.js]"]
  node_wallet["Wallet integration<br/>[web3.jsx]"]
  node_uploadclient["Media upload client<br/>[uploadToR2.js]"]
end

subgraph group_server["Marketplace services"]
  node_server["HTTP server<br/>[index.js]"]
  node_routes["Marketplace API<br/>[routes.js]"]
  node_uploadroutes["Upload API<br/>[upload.js]"]
  node_sync["Collection sync<br/>[sync.js]"]
  node_crawler["Chain crawler<br/>[crawler.js]"]
end

subgraph group_data["Marketplace data"]
  node_models["Marketplace models"]
  node_storage["Data access<br/>[storage.js]"]
end

subgraph group_chain["Chain and media"]
  node_contracts["Marketplace contracts"]
end

node_visitor(("Marketplace user"))
node_mongodb[("MongoDB")]
node_hemi{{"Hemi network"}}
node_r2[("Cloudflare R2")]
node_browser(("User browser"))

node_visitor -->|"uses"| node_browser
node_browser -->|"opens"| node_app
node_app -->|"routes"| node_browse
node_app -->|"routes"| node_collections
node_app -->|"routes"| node_nftdetails
node_app -->|"routes"| node_profile
node_app -->|"routes"| node_create
node_app -->|"routes"| node_activity
node_browse -->|"requests data"| node_clientapi
node_collections -->|"requests data"| node_clientapi
node_nftdetails -->|"requests data"| node_clientapi
node_profile -->|"requests data"| node_clientapi
node_activity -->|"requests data"| node_clientapi
node_clientapi -->|"HTTP requests"| node_server
node_server -->|"registers"| node_routes
node_routes -->|"queries and updates"| node_models
node_uploadclient -->|"requests upload"| node_server
node_server -->|"registers"| node_uploadroutes
node_uploadroutes -->|"signs uploads"| node_r2
node_uploadroutes -->|"updates user"| node_models
node_profile -->|"uploads media"| node_uploadclient
node_wallet -.->|"connects"| node_hemi
node_create -.->|"uses wallet"| node_wallet
node_sync -->|"updates collections"| node_models
node_crawler -->|"records chain data"| node_models
node_models -->|"reads and writes"| node_mongodb
node_storage -->|"reads and writes"| node_mongodb
node_contracts -.->|"deploys to"| node_hemi

click node_app "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/App.jsx"
click node_browse "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Home.jsx"
click node_collections "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Collections.jsx"
click node_nftdetails "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/NftDetails.jsx"
click node_profile "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Profile.jsx"
click node_create "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Create.jsx"
click node_activity "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/activity.jsx"
click node_clientapi "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/queryClient.js"
click node_wallet "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/web3.jsx"
click node_uploadclient "https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/uploadToR2.js"
click node_server "https://github.com/nabilislam722/mintora/blob/main/apps/server/index.js"
click node_routes "https://github.com/nabilislam722/mintora/blob/main/apps/server/routes.js"
click node_uploadroutes "https://github.com/nabilislam722/mintora/blob/main/apps/server/routes/upload.js"
click node_sync "https://github.com/nabilislam722/mintora/blob/main/apps/server/sync.js"
click node_crawler "https://github.com/nabilislam722/mintora/blob/main/apps/server/crawler.js"
click node_models "https://github.com/nabilislam722/mintora/tree/main/apps/server/models"
click node_storage "https://github.com/nabilislam722/mintora/blob/main/apps/server/storage.js"
click node_contracts "https://github.com/nabilislam722/mintora/tree/main/packages/marketcontract"

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_browse,node_collections,node_nftdetails,node_profile,node_create,node_activity,node_clientapi,node_wallet,node_uploadclient,node_visitor,node_browser toneBlue
class node_server,node_routes,node_uploadroutes,node_sync,node_crawler,node_mongodb,node_r2 toneAmber
class node_models,node_storage toneMint
class node_contracts toneRose
class node_hemi toneIndigo
```

## Components

### Marketplace client

- [App router](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/App.jsx): `apps/client/src/App.jsx`
- [Marketplace pages](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Home.jsx): `apps/client/src/pages/Home.jsx`
- [Collection views](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Collections.jsx): `apps/client/src/pages/Collections.jsx`
- [NFT details](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/NftDetails.jsx): `apps/client/src/pages/NftDetails.jsx`
- [Profiles and settings](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Profile.jsx): `apps/client/src/pages/Profile.jsx`
- [NFT creation](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/Create.jsx): `apps/client/src/pages/Create.jsx`
- [Activity feed](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/pages/activity.jsx): `apps/client/src/pages/activity.jsx`
- [API query client](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/queryClient.js): `apps/client/src/lib/queryClient.js`
- [Wallet integration](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/web3.jsx): `apps/client/src/lib/web3.jsx`
- [Media upload client](https://github.com/nabilislam722/mintora/blob/main/apps/client/src/lib/uploadToR2.js): `apps/client/src/lib/uploadToR2.js`

### Marketplace services

- [HTTP server](https://github.com/nabilislam722/mintora/blob/main/apps/server/index.js): `apps/server/index.js`
- [Marketplace API](https://github.com/nabilislam722/mintora/blob/main/apps/server/routes.js): `apps/server/routes.js`
- [Upload API](https://github.com/nabilislam722/mintora/blob/main/apps/server/routes/upload.js): `apps/server/routes/upload.js`
- [Collection sync](https://github.com/nabilislam722/mintora/blob/main/apps/server/sync.js): `apps/server/sync.js`
- [Chain crawler](https://github.com/nabilislam722/mintora/blob/main/apps/server/crawler.js): `apps/server/crawler.js`

### Marketplace data

- [Marketplace models](https://github.com/nabilislam722/mintora/tree/main/apps/server/models): `apps/server/models`
- [Data access](https://github.com/nabilislam722/mintora/blob/main/apps/server/storage.js): `apps/server/storage.js`

### Chain and media

- [Marketplace contracts](https://github.com/nabilislam722/mintora/tree/main/packages/marketcontract): `packages/marketcontract`

### Other components

- **Marketplace user**
- **MongoDB**
- **Hemi network**
- **Cloudflare R2**
- **User browser**

## Connections

- Marketplace user → User browser: uses
- User browser → App router: opens
- App router → Marketplace pages: routes
- App router → Collection views: routes
- App router → NFT details: routes
- App router → Profiles and settings: routes
- App router → NFT creation: routes
- App router → Activity feed: routes
- Marketplace pages → API query client: requests data
- Collection views → API query client: requests data
- NFT details → API query client: requests data
- Profiles and settings → API query client: requests data
- Activity feed → API query client: requests data
- API query client → HTTP server: HTTP requests
- HTTP server → Marketplace API: registers
- Marketplace API → Marketplace models: queries and updates
- Media upload client → HTTP server: requests upload
- HTTP server → Upload API: registers
- Upload API → Cloudflare R2: signs uploads
- Upload API → Marketplace models: updates user
- Profiles and settings → Media upload client: uploads media
- Wallet integration → Hemi network: connects
- NFT creation → Wallet integration: uses wallet
- Collection sync → Marketplace models: updates collections
- Chain crawler → Marketplace models: records chain data
- Marketplace models → MongoDB: reads and writes
- Data access → MongoDB: reads and writes
- Marketplace contracts → Hemi network: deploys to
