# sudhanshubaberwal/rescrapx architecture

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

- Interactive diagram: https://gitdiagram.com/sudhanshubaberwal/rescrapx
- Repository: https://github.com/sudhanshubaberwal/rescrapx

## Overview

RescrapX is a vehicle-scrapping marketplace: customers register vehicles and upload information for valuation, partners bid, and accepted offers proceed through pickup, processing documentation, and settlement. The gateway authenticates and routes requests to backend services; the frontend provides customer, partner, and admin portals. The README documents the business workflow and capabilities, while sampled backend excerpts confirm selected controller, service, repository, and notification calls. Several portal and later-stage implementations were not sampled, so those links are documented rather than inferred from module names.

Main entry points: [`backend/gateway/src/app.ts`](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/gateway/src/app.ts) (API gateway), [`backend/services/auction-service/src/service/auction.service.ts`](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/service/auction.service.ts) (Auction service), [`frontend/src/app/(protected)/page.tsx`](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/app/(protected)/page.tsx) (Customer portal), [`backend/services/auth/src/service/auth.service.ts`](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/service/auth.service.ts) (Identity service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Marketplace Portals"]
  node_customer["Customer portal<br/>[page.tsx]"]
  node_partner["Partner portal<br/>[page.tsx]"]
  node_admin["Admin panel<br/>[AdminPage.tsx]"]
  node_frontend_auth["Auth client<br/>[auth.service.ts]"]
  node_frontend_vehicle["Vehicle client<br/>[vehicle.service.ts]"]
  node_frontend_auction["Auction client<br/>[auction.service.ts]"]
end

subgraph group_edge["Gateway"]
  node_gateway["API gateway<br/>[app.ts]"]
  node_gateway_auth["JWT protection<br/>[auth.middleware.ts]"]
end

subgraph group_identity["Identity"]
  node_auth_api["Auth routes<br/>[auth.route.ts]"]
  node_auth_controller["Auth controller<br/>[auth.controller.ts]"]
  node_auth_service["Identity service<br/>[auth.service.ts]"]
  node_auth_repo["User repository<br/>[auth.repository.ts]"]
  node_user_store[("User records<br/>[user.model.ts]")]
end

subgraph group_vehicle["Vehicle Lifecycle"]
  node_vehicle_api["Vehicle API<br/>[vehicle.route.ts]"]
  node_vehicle_controller["Vehicle controller"]
  node_vehicle_service["Vehicle lifecycle<br/>[vehicle.service.ts]"]
  node_vehicle_repo["Vehicle repository"]
  node_vehicle_store[("Vehicle records<br/>[vehicle.model.ts]")]
end

subgraph group_market["Auctions and Messaging"]
  node_auction_api["Auction API<br/>[auction.route.ts]"]
  node_auction_controller["Auction controller"]
  node_auction_service["Auction service<br/>[auction.service.ts]"]
  node_auction_repo["Auction repository"]
  node_auction_store[("Auction records<br/>[auction.model.ts]")]
  node_notification["Email notifications"]
end

node_actor_customer(("Customer"))
node_actor_partner(("RVSF partner"))
node_actor_admin(("Administrator"))

node_actor_customer -->|"uses"| node_customer
node_actor_partner -->|"uses"| node_partner
node_actor_admin -->|"uses"| node_admin
node_customer -.->|"authenticates via"| node_frontend_auth
node_customer -->|"registers vehicles"| node_frontend_vehicle
node_partner -->|"places bids"| node_frontend_auction
node_admin -->|"requests dashboard"| node_gateway
node_frontend_auth -.->|"sends requests"| node_gateway
node_frontend_vehicle -.->|"sends requests"| node_gateway
node_frontend_auction -.->|"sends requests"| node_gateway
node_gateway -->|"protects routes"| node_gateway_auth
node_gateway -->|"proxies auth"| node_auth_api
node_gateway -->|"proxies vehicles"| node_vehicle_api
node_gateway -->|"proxies auctions"| node_auction_api
node_auth_api -->|"routes requests"| node_auth_controller
node_auth_controller -->|"invokes"| node_auth_service
node_auth_service -->|"reads and writes"| node_auth_repo
node_auth_repo -->|"queries"| node_user_store
node_auth_service -->|"requests email"| node_notification
node_vehicle_api -->|"routes requests"| node_vehicle_controller
node_vehicle_controller -->|"invokes"| node_vehicle_service
node_vehicle_service -->|"uses"| node_vehicle_repo
node_vehicle_repo -->|"reads and writes"| node_vehicle_store
node_vehicle_service -.->|"auction handoff"| node_auction_service
node_auction_api -.->|"routes requests"| node_auction_controller
node_auction_controller -->|"invokes"| node_auction_service
node_auction_controller -->|"queries"| node_auction_repo
node_auction_service -->|"uses"| node_auction_repo
node_auction_repo -->|"reads and writes"| node_auction_store
node_auction_service -.->|"sends alerts"| node_notification

click node_customer "https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/app/(protected)/page.tsx"
click node_partner "https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/app/(protected)/partner/page.tsx"
click node_admin "https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/components/admin/AdminPage.tsx"
click node_frontend_auth "https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/services/auth.service.ts"
click node_frontend_vehicle "https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/services/vehicle.service.ts"
click node_frontend_auction "https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/services/auction/auction.service.ts"
click node_gateway "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/gateway/src/app.ts"
click node_gateway_auth "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/gateway/src/middleware/auth.middleware.ts"
click node_auth_api "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/routes/auth.route.ts"
click node_auth_controller "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/controllers/auth.controller.ts"
click node_auth_service "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/service/auth.service.ts"
click node_auth_repo "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/repository/auth.repository.ts"
click node_user_store "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/models/user.model.ts"
click node_vehicle_api "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/routes/vehicle.route.ts"
click node_vehicle_controller "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/controllers/vehicle.controller.ts"
click node_vehicle_service "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/services/vehicle.service.ts"
click node_vehicle_repo "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/repositories/vehicle.repository.ts"
click node_vehicle_store "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/models/vehicle.model.ts"
click node_auction_api "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/routes/auction.route.ts"
click node_auction_controller "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/controllers/auction.controller.ts"
click node_auction_service "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/service/auction.service.ts"
click node_auction_repo "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/repositories/auction.repository.ts"
click node_auction_store "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/models/auction.model.ts"
click node_notification "https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/notification-service/src/controllers/notification.controller.ts"

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_customer,node_partner,node_admin,node_frontend_auth,node_frontend_vehicle,node_frontend_auction toneBlue
class node_gateway,node_gateway_auth toneAmber
class node_auth_api,node_auth_controller,node_auth_service,node_auth_repo,node_user_store toneMint
class node_vehicle_api,node_vehicle_controller,node_vehicle_service,node_vehicle_repo,node_vehicle_store toneRose
class node_auction_api,node_auction_controller,node_auction_service,node_auction_repo,node_auction_store,node_notification,node_actor_customer,node_actor_partner,node_actor_admin toneIndigo
```

## Components

### Marketplace Portals

- [Customer portal](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/app/(protected)/page.tsx): `frontend/src/app/(protected)/page.tsx`
- [Partner portal](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/app/(protected)/partner/page.tsx): `frontend/src/app/(protected)/partner/page.tsx`
- [Admin panel](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/components/admin/AdminPage.tsx): `frontend/src/components/admin/AdminPage.tsx`
- [Auth client](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/services/auth.service.ts): `frontend/src/services/auth.service.ts`
- [Vehicle client](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/services/vehicle.service.ts): `frontend/src/services/vehicle.service.ts`
- [Auction client](https://github.com/sudhanshubaberwal/rescrapx/blob/main/frontend/src/services/auction/auction.service.ts): `frontend/src/services/auction/auction.service.ts`

### Gateway

- [API gateway](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/gateway/src/app.ts): `backend/gateway/src/app.ts`
- [JWT protection](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/gateway/src/middleware/auth.middleware.ts): `backend/gateway/src/middleware/auth.middleware.ts`

### Identity

- [Auth routes](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/routes/auth.route.ts): `backend/services/auth/src/routes/auth.route.ts`
- [Auth controller](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/controllers/auth.controller.ts): `backend/services/auth/src/controllers/auth.controller.ts`
- [Identity service](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/service/auth.service.ts): `backend/services/auth/src/service/auth.service.ts`
- [User repository](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/repository/auth.repository.ts): `backend/services/auth/src/repository/auth.repository.ts`
- [User records](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auth/src/models/user.model.ts): `backend/services/auth/src/models/user.model.ts`

### Vehicle Lifecycle

- [Vehicle API](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/routes/vehicle.route.ts): `backend/services/vehicle-service/src/routes/vehicle.route.ts`
- [Vehicle controller](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/controllers/vehicle.controller.ts): `backend/services/vehicle-service/src/controllers/vehicle.controller.ts`
- [Vehicle lifecycle](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/services/vehicle.service.ts): `backend/services/vehicle-service/src/services/vehicle.service.ts`
- [Vehicle repository](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/repositories/vehicle.repository.ts): `backend/services/vehicle-service/src/repositories/vehicle.repository.ts`
- [Vehicle records](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/vehicle-service/src/models/vehicle.model.ts): `backend/services/vehicle-service/src/models/vehicle.model.ts`

### Auctions and Messaging

- [Auction API](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/routes/auction.route.ts): `backend/services/auction-service/src/routes/auction.route.ts`
- [Auction controller](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/controllers/auction.controller.ts): `backend/services/auction-service/src/controllers/auction.controller.ts`
- [Auction service](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/service/auction.service.ts): `backend/services/auction-service/src/service/auction.service.ts`
- [Auction repository](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/repositories/auction.repository.ts): `backend/services/auction-service/src/repositories/auction.repository.ts`
- [Auction records](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/auction-service/src/models/auction.model.ts): `backend/services/auction-service/src/models/auction.model.ts`
- [Email notifications](https://github.com/sudhanshubaberwal/rescrapx/blob/main/backend/services/notification-service/src/controllers/notification.controller.ts): `backend/services/notification-service/src/controllers/notification.controller.ts`

### Other components

- **Customer**
- **RVSF partner**
- **Administrator**

## Connections

- Customer → Customer portal: uses
- RVSF partner → Partner portal: uses
- Administrator → Admin panel: uses
- Customer portal → Auth client: authenticates via
- Customer portal → Vehicle client: registers vehicles
- Partner portal → Auction client: places bids
- Admin panel → API gateway: requests dashboard
- Auth client → API gateway: sends requests
- Vehicle client → API gateway: sends requests
- Auction client → API gateway: sends requests
- API gateway → JWT protection: protects routes (evidence: `backend/gateway/src/app.ts`)
- API gateway → Auth routes: proxies auth (evidence: `backend/gateway/src/app.ts`)
- API gateway → Vehicle API: proxies vehicles (evidence: `backend/gateway/src/app.ts`)
- API gateway → Auction API: proxies auctions (evidence: `backend/gateway/src/app.ts`)
- Auth routes → Auth controller: routes requests
- Auth controller → Identity service: invokes (evidence: `backend/services/auth/src/controllers/auth.controller.ts`)
- Identity service → User repository: reads and writes (evidence: `backend/services/auth/src/service/auth.service.ts`)
- User repository → User records: queries (evidence: `backend/services/auth/src/repository/auth.repository.ts`)
- Identity service → Email notifications: requests email (evidence: `backend/services/auth/src/service/auth.service.ts`)
- Vehicle API → Vehicle controller: routes requests
- Vehicle controller → Vehicle lifecycle: invokes (evidence: `backend/services/vehicle-service/src/controllers/vehicle.controller.ts`)
- Vehicle lifecycle → Vehicle repository: uses (evidence: `backend/services/vehicle-service/src/services/vehicle.service.ts`)
- Vehicle repository → Vehicle records: reads and writes (evidence: `backend/services/vehicle-service/src/repositories/vehicle.repository.ts`)
- Vehicle lifecycle → Auction service: auction handoff
- Auction API → Auction controller: routes requests
- Auction controller → Auction service: invokes (evidence: `backend/services/auction-service/src/controllers/auction.controller.ts`)
- Auction controller → Auction repository: queries (evidence: `backend/services/auction-service/src/controllers/auction.controller.ts`)
- Auction service → Auction repository: uses (evidence: `backend/services/auction-service/src/service/auction.service.ts`)
- Auction repository → Auction records: reads and writes (evidence: `backend/services/auction-service/src/repositories/auction.repository.ts`)
- Auction service → Email notifications: sends alerts
