# sukanta116/ulab_lost_and_found architecture

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

## Overview

ULAB Lost & Found is a community REST API for reporting lost items, registering found items, and managing ownership claims, with student, staff, and admin capabilities. The principal workflow runs from user authentication through item reporting or found-item registration to claim submission and staff review; admin user management is a separate branch. The graph includes the app’s route mounts and model interactions visible in sampled source. Some route-to-controller and authorization wiring is not shown in the excerpts, so those links are omitted.

Main entry points: [`app.js`](https://github.com/sukanta116/ulab_lost_and_found/blob/main/app.js) (Express app), [`model/User.js`](https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/User.js) (User records), [`routes/authRoute.js`](https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/authRoute.js) (Auth routes), [`controllers/claimController.js`](https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/claimController.js) (Claim verification)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API entry"]
  node_app["Express app<br/>[app.js]"]
  node_lost_routes["Lost routes<br/>[lostRoute.js]"]
  node_found_routes["Found routes<br/>[foundRoute.js]"]
  node_claim_routes["Claim routes<br/>[claimRoute.js]"]
  node_auth_routes["Auth routes<br/>[authRoute.js]"]
  node_admin_routes["Admin routes<br/>[adminRoute.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Authentication<br/>[authController.js]"]
  node_auth_middleware["JWT authentication<br/>[authenticate.js]"]
  node_validation["Request validation<br/>[userValidation.js]"]
  node_role_access["Role authorization<br/>[roleMiddleware.js]"]
  node_user_controller["User administration<br/>[adminController.js]"]
  node_user_model[("User records<br/>[User.js]")]
end

subgraph group_items["Item records"]
  node_lost_controller["Lost item management<br/>[lostController.js]"]
  node_lost_model[("Lost records<br/>[Lost.js]")]
  node_found_controller["Found item management<br/>[foundController.js]"]
  node_found_model[("Found records<br/>[Found.js]")]
end

subgraph group_claims_admin["Claims and administration"]
  node_claim_controller["Claim verification<br/>[claimController.js]"]
  node_claim_model[("Claim records<br/>[Claim.js]")]
end

node_community(("ULAB community"))
node_mongo[("MongoDB")]

node_community -->|"sends requests"| node_app
node_app -->|"mounts /lost"| node_lost_routes
node_app -->|"mounts /found"| node_found_routes
node_app -->|"mounts /claim"| node_claim_routes
node_app -->|"mounts /user"| node_auth_routes
node_app -->|"mounts /admin/user"| node_admin_routes
node_app -->|"connects"| node_mongo
node_auth_routes -->|"validates registration"| node_validation
node_auth_routes -->|"protects logout"| node_auth_middleware
node_auth_controller -->|"creates and reads"| node_user_model
node_user_controller -->|"manages users"| node_user_model
node_lost_controller -->|"reads and writes"| node_lost_model
node_found_controller -->|"reads and writes"| node_found_model
node_claim_controller -->|"reads and writes"| node_claim_model
node_claim_controller -->|"imports user model"| node_user_model
node_user_model -->|"persists records"| node_mongo
node_lost_model -->|"persists records"| node_mongo
node_found_model -->|"persists records"| node_mongo
node_claim_model -->|"persists records"| node_mongo

click node_app "https://github.com/sukanta116/ulab_lost_and_found/blob/main/app.js"
click node_lost_routes "https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/lostRoute.js"
click node_found_routes "https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/foundRoute.js"
click node_claim_routes "https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/claimRoute.js"
click node_auth_routes "https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/authRoute.js"
click node_admin_routes "https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/adminRoute.js"
click node_auth_controller "https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/authController.js"
click node_auth_middleware "https://github.com/sukanta116/ulab_lost_and_found/blob/main/middleware/authenticate.js"
click node_validation "https://github.com/sukanta116/ulab_lost_and_found/blob/main/middleware/userValidation.js"
click node_role_access "https://github.com/sukanta116/ulab_lost_and_found/blob/main/middleware/roleMiddleware.js"
click node_user_controller "https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/adminController.js"
click node_user_model "https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/User.js"
click node_lost_controller "https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/lostController.js"
click node_lost_model "https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/Lost.js"
click node_found_controller "https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/foundController.js"
click node_found_model "https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/Found.js"
click node_claim_controller "https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/claimController.js"
click node_claim_model "https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/Claim.js"

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_lost_routes,node_found_routes,node_claim_routes,node_auth_routes,node_admin_routes toneBlue
class node_auth_controller,node_auth_middleware,node_validation,node_role_access,node_user_controller,node_user_model,node_mongo toneAmber
class node_lost_controller,node_lost_model,node_found_controller,node_found_model toneMint
class node_claim_controller,node_claim_model toneRose
class node_community toneIndigo
```

## Components

### API entry

- [Express app](https://github.com/sukanta116/ulab_lost_and_found/blob/main/app.js): `app.js`
- [Lost routes](https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/lostRoute.js): `routes/lostRoute.js`
- [Found routes](https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/foundRoute.js): `routes/foundRoute.js`
- [Claim routes](https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/claimRoute.js): `routes/claimRoute.js`
- [Auth routes](https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/authRoute.js): `routes/authRoute.js`
- [Admin routes](https://github.com/sukanta116/ulab_lost_and_found/blob/main/routes/adminRoute.js): `routes/adminRoute.js`

### Identity and access

- [Authentication](https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/authController.js): `controllers/authController.js`
- [JWT authentication](https://github.com/sukanta116/ulab_lost_and_found/blob/main/middleware/authenticate.js): `middleware/authenticate.js`
- [Request validation](https://github.com/sukanta116/ulab_lost_and_found/blob/main/middleware/userValidation.js): `middleware/userValidation.js`
- [Role authorization](https://github.com/sukanta116/ulab_lost_and_found/blob/main/middleware/roleMiddleware.js): `middleware/roleMiddleware.js`
- [User administration](https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/adminController.js): `controllers/adminController.js`
- [User records](https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/User.js): `model/User.js`

### Item records

- [Lost item management](https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/lostController.js): `controllers/lostController.js`
- [Lost records](https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/Lost.js): `model/Lost.js`
- [Found item management](https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/foundController.js): `controllers/foundController.js`
- [Found records](https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/Found.js): `model/Found.js`

### Claims and administration

- [Claim verification](https://github.com/sukanta116/ulab_lost_and_found/blob/main/controllers/claimController.js): `controllers/claimController.js`
- [Claim records](https://github.com/sukanta116/ulab_lost_and_found/blob/main/model/Claim.js): `model/Claim.js`

### Other components

- **ULAB community**
- **MongoDB**

## Connections

- ULAB community → Express app: sends requests
- Express app → Lost routes: mounts /lost
- Express app → Found routes: mounts /found
- Express app → Claim routes: mounts /claim
- Express app → Auth routes: mounts /user
- Express app → Admin routes: mounts /admin/user
- Express app → MongoDB: connects
- Auth routes → Request validation: validates registration
- Auth routes → JWT authentication: protects logout
- Authentication → User records: creates and reads
- User administration → User records: manages users
- Lost item management → Lost records: reads and writes
- Found item management → Found records: reads and writes
- Claim verification → Claim records: reads and writes
- Claim verification → User records: imports user model
- User records → MongoDB: persists records
- Lost records → MongoDB: persists records
- Found records → MongoDB: persists records
- Claim records → MongoDB: persists records
