# kritika8006/rewear architecture

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

## Overview

ReWear is a sustainable clothing exchange platform. Its main workflow is users registering or signing in, listing clothing, browsing available items, and requesting or responding to swaps. The backend exposes authentication, item, and swap APIs backed by user, item, and swap records; it also offers image-based clothing category suggestions through a separate CLIP service. The graph reflects sampled routing and controller behavior; frontend page-to-API wiring and unsampled integrations are not asserted.

Main entry points: [`frontend/src/App.jsx`](https://github.com/kritika8006/rewear/blob/main/frontend/src/App.jsx) (App router), [`backend/server.js`](https://github.com/kritika8006/rewear/blob/main/backend/server.js) (API server), [`backend/routes/itemRoutes.js`](https://github.com/kritika8006/rewear/blob/main/backend/routes/itemRoutes.js) (Item routes), [`backend/routes/swapRoutes.js`](https://github.com/kritika8006/rewear/blob/main/backend/routes/swapRoutes.js) (Swap routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["App router<br/>[App.jsx]"]
  node_browse["Browse items<br/>[BrowseItems.jsx]"]
  node_listing["My listings<br/>[MyListings.jsx]"]
  node_product["Product design<br/>[ProductDesign.jsx]"]
  node_swaps["Swap requests<br/>[SwapRequests.jsx]"]
  node_login["Sign in<br/>[LoginPage.jsx]"]
  node_signup["Sign up<br/>[SignupPage.jsx]"]
  node_http["API client<br/>[axios.js]"]
end

subgraph group_api["Backend API"]
  node_server["API server<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_itemroutes["Item routes<br/>[itemRoutes.js]"]
  node_swaproutes["Swap routes<br/>[swapRoutes.js]"]
  node_cliproutes["Suggestion route<br/>[clipRoutes.js]"]
end

subgraph group_domain["Exchange domain"]
  node_authcontroller["Authentication<br/>[authController.js]"]
  node_itemcontroller["Item management<br/>[itemController.js]"]
  node_swapcontroller["Swap management<br/>[swapController.js]"]
  node_protect["Access control<br/>[authMiddleware.js]"]
  node_userdb[("Users<br/>[User.js]")]
  node_itemdb[("Items<br/>[Item.js]")]
  node_swapdb[("Swap records<br/>[Swap.js]")]
end

subgraph group_vision["Image suggestions"]
  node_clipservice["CLIP classifier<br/>[app.py]"]
end

node_user(("Platform user"))
node_imagehost["Image URL source"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_browse
node_app -->|"routes to"| node_listing
node_app -->|"routes to"| node_product
node_app -->|"routes to"| node_swaps
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_signup
node_server -->|"mounts"| node_authroutes
node_server -->|"mounts"| node_itemroutes
node_server -->|"mounts"| node_swaproutes
node_server -->|"mounts"| node_cliproutes
node_authroutes -->|"dispatches"| node_authcontroller
node_itemroutes -->|"guards"| node_protect
node_itemroutes -->|"dispatches"| node_itemcontroller
node_swaproutes -->|"guards"| node_protect
node_swaproutes -->|"dispatches"| node_swapcontroller
node_authcontroller -->|"reads/writes"| node_userdb
node_protect -->|"loads user"| node_userdb
node_itemcontroller -->|"reads/writes"| node_itemdb
node_swapcontroller -->|"loads items"| node_itemdb
node_swapcontroller -->|"reads/writes"| node_swapdb
node_cliproutes -->|"requests suggestion"| node_clipservice
node_clipservice -->|"fetches image"| node_imagehost

click node_app "https://github.com/kritika8006/rewear/blob/main/frontend/src/App.jsx"
click node_browse "https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/BrowseItems.jsx"
click node_listing "https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/MyListings.jsx"
click node_product "https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/ProductDesign.jsx"
click node_swaps "https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/SwapRequests.jsx"
click node_login "https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/LoginPage.jsx"
click node_signup "https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/SignupPage.jsx"
click node_http "https://github.com/kritika8006/rewear/blob/main/frontend/src/api/axios.js"
click node_server "https://github.com/kritika8006/rewear/blob/main/backend/server.js"
click node_authroutes "https://github.com/kritika8006/rewear/blob/main/backend/routes/authRoutes.js"
click node_itemroutes "https://github.com/kritika8006/rewear/blob/main/backend/routes/itemRoutes.js"
click node_swaproutes "https://github.com/kritika8006/rewear/blob/main/backend/routes/swapRoutes.js"
click node_cliproutes "https://github.com/kritika8006/rewear/blob/main/backend/routes/clipRoutes.js"
click node_authcontroller "https://github.com/kritika8006/rewear/blob/main/backend/controllers/authController.js"
click node_itemcontroller "https://github.com/kritika8006/rewear/blob/main/backend/controllers/itemController.js"
click node_swapcontroller "https://github.com/kritika8006/rewear/blob/main/backend/controllers/swapController.js"
click node_protect "https://github.com/kritika8006/rewear/blob/main/backend/middlewares/authMiddleware.js"
click node_userdb "https://github.com/kritika8006/rewear/blob/main/backend/models/User.js"
click node_itemdb "https://github.com/kritika8006/rewear/blob/main/backend/models/Item.js"
click node_swapdb "https://github.com/kritika8006/rewear/blob/main/backend/models/Swap.js"
click node_clipservice "https://github.com/kritika8006/rewear/blob/main/backend/clip_service/app.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_app,node_browse,node_listing,node_product,node_swaps,node_login,node_signup,node_http,node_user toneBlue
class node_server,node_authroutes,node_itemroutes,node_swaproutes,node_cliproutes toneAmber
class node_authcontroller,node_itemcontroller,node_swapcontroller,node_protect,node_userdb,node_itemdb,node_swapdb toneMint
class node_clipservice toneRose
class node_imagehost toneIndigo
```

## Components

### Web application

- [App router](https://github.com/kritika8006/rewear/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Browse items](https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/BrowseItems.jsx): `frontend/src/pages/BrowseItems.jsx`
- [My listings](https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/MyListings.jsx): `frontend/src/pages/MyListings.jsx`
- [Product design](https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/ProductDesign.jsx): `frontend/src/pages/ProductDesign.jsx`
- [Swap requests](https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/SwapRequests.jsx): `frontend/src/pages/SwapRequests.jsx`
- [Sign in](https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/LoginPage.jsx): `frontend/src/pages/LoginPage.jsx`
- [Sign up](https://github.com/kritika8006/rewear/blob/main/frontend/src/pages/SignupPage.jsx): `frontend/src/pages/SignupPage.jsx`
- [API client](https://github.com/kritika8006/rewear/blob/main/frontend/src/api/axios.js): `frontend/src/api/axios.js`

### Backend API

- [API server](https://github.com/kritika8006/rewear/blob/main/backend/server.js): `backend/server.js`
- [Auth routes](https://github.com/kritika8006/rewear/blob/main/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Item routes](https://github.com/kritika8006/rewear/blob/main/backend/routes/itemRoutes.js): `backend/routes/itemRoutes.js`
- [Swap routes](https://github.com/kritika8006/rewear/blob/main/backend/routes/swapRoutes.js): `backend/routes/swapRoutes.js`
- [Suggestion route](https://github.com/kritika8006/rewear/blob/main/backend/routes/clipRoutes.js): `backend/routes/clipRoutes.js`

### Exchange domain

- [Authentication](https://github.com/kritika8006/rewear/blob/main/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Item management](https://github.com/kritika8006/rewear/blob/main/backend/controllers/itemController.js): `backend/controllers/itemController.js`
- [Swap management](https://github.com/kritika8006/rewear/blob/main/backend/controllers/swapController.js): `backend/controllers/swapController.js`
- [Access control](https://github.com/kritika8006/rewear/blob/main/backend/middlewares/authMiddleware.js): `backend/middlewares/authMiddleware.js`
- [Users](https://github.com/kritika8006/rewear/blob/main/backend/models/User.js): `backend/models/User.js`
- [Items](https://github.com/kritika8006/rewear/blob/main/backend/models/Item.js): `backend/models/Item.js`
- [Swap records](https://github.com/kritika8006/rewear/blob/main/backend/models/Swap.js): `backend/models/Swap.js`

### Image suggestions

- [CLIP classifier](https://github.com/kritika8006/rewear/blob/main/backend/clip_service/app.py): `backend/clip_service/app.py`

### Other components

- **Platform user**
- **Image URL source**

## Connections

- Platform user → App router: uses
- App router → Browse items: routes to
- App router → My listings: routes to
- App router → Product design: routes to
- App router → Swap requests: routes to
- App router → Sign in: routes to
- App router → Sign up: routes to
- API server → Auth routes: mounts
- API server → Item routes: mounts
- API server → Swap routes: mounts
- API server → Suggestion route: mounts
- Auth routes → Authentication: dispatches
- Item routes → Access control: guards
- Item routes → Item management: dispatches
- Swap routes → Access control: guards
- Swap routes → Swap management: dispatches
- Authentication → Users: reads/writes
- Access control → Users: loads user
- Item management → Items: reads/writes
- Swap management → Items: loads items
- Swap management → Swap records: reads/writes
- Suggestion route → CLIP classifier: requests suggestion
- CLIP classifier → Image URL source: fetches image
