# vikasvikas5380-debug/proofpath architecture

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

- Interactive diagram: https://gitdiagram.com/vikasvikas5380-debug/proofpath
- Repository: https://github.com/vikasvikas5380-debug/proofpath

## Overview

ProofPath is an evidence-registration and chain-of-custody application, with a React web client and an Express API. Users register or sign in, upload evidence for SHA-256 fingerprinting and storage, and can later verify a file or review its activity history. Investigator and admin workflows add decisions and user management; public token-based verification is also supported. The graph covers sampled client/server code and documented routes. The mobile tree contains native platform scaffolding but no sampled application runtime, so it is not mapped. Several controller-to-model links are supported by the SOURCE INDEX; unsampled behavior is not inferred.

Main entry points: [`server/routes/evidenceRoutes.js`](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/evidenceRoutes.js) (Evidence routes), [`server/server.js`](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/server.js) (Express server), [`server/middleware/authMiddleware.js`](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/middleware/authMiddleware.js) (Authentication guards), [`server/models/Evidence.js`](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/models/Evidence.js) (Evidence records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web client"]
  node_app["Application UI<br/>[App.jsx]"]
  node_adminui["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_http["HTTP client<br/>[axios.js]"]
end

subgraph group_api["API routing"]
  node_server["Express server<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_evidenceroutes["Evidence routes<br/>[evidenceRoutes.js]"]
  node_adminroutes["Admin routes<br/>[adminRoutes.js]"]
  node_dbconfig["Database connection<br/>[db.js]"]
end

subgraph group_evidence["Evidence workflows"]
  node_evidencectrl["Evidence registration and verification"]
  node_investigator["Investigator review"]
  node_history["Activity history"]
  node_evidencemodel[("Evidence records<br/>[Evidence.js]")]
  node_upload["Upload handling"]
  node_cloudinary["Cloudinary storage<br/>[cloudinary.js]"]
end

subgraph group_identity["Identity and administration"]
  node_authmw["Authentication guards<br/>[authMiddleware.js]"]
  node_authctrl["Account access<br/>[authController.js]"]
  node_adminctrl["Admin operations<br/>[adminController.js]"]
  node_users[("User records<br/>[User.js]")]
end

node_user(("User"))
node_cloudinary_service[("Cloudinary")]

node_user -->|"uses"| node_app
node_app -->|"sends requests"| node_http
node_app -->|"renders"| node_adminui
node_server -->|"mounts"| node_authroutes
node_server -->|"mounts"| node_evidenceroutes
node_server -->|"mounts"| node_adminroutes
node_server -->|"connects through"| node_dbconfig
node_authroutes -->|"dispatches"| node_authctrl
node_authroutes -->|"protects profile"| node_authmw
node_evidenceroutes -->|"guards access"| node_authmw
node_evidenceroutes -->|"handles uploads"| node_upload
node_evidenceroutes -->|"dispatches"| node_evidencectrl
node_evidenceroutes -->|"dispatches"| node_history
node_evidenceroutes -->|"dispatches"| node_investigator
node_adminroutes -->|"guards access"| node_authmw
node_adminroutes -->|"dispatches"| node_adminctrl
node_authctrl -->|"reads and writes"| node_users
node_authmw -->|"loads account"| node_users
node_adminctrl -->|"manages users"| node_users
node_adminctrl -->|"counts evidence"| node_evidencemodel
node_evidencectrl -->|"reads and writes"| node_evidencemodel
node_evidencectrl -->|"uploads files"| node_cloudinary
node_cloudinary -.->|"stores files"| node_cloudinary_service
node_investigator -->|"reviews records"| node_evidencemodel
node_history -->|"reads history"| node_evidencemodel
node_http -.->|"calls API"| node_server

click node_app "https://github.com/vikasvikas5380-debug/proofpath/blob/main/client/src/App.jsx"
click node_adminui "https://github.com/vikasvikas5380-debug/proofpath/blob/main/client/src/AdminDashboard.jsx"
click node_http "https://github.com/vikasvikas5380-debug/proofpath/blob/main/client/src/api/axios.js"
click node_server "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/server.js"
click node_authroutes "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/authRoutes.js"
click node_evidenceroutes "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/evidenceRoutes.js"
click node_adminroutes "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/adminRoutes.js"
click node_authmw "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/middleware/authMiddleware.js"
click node_authctrl "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/authController.js"
click node_adminctrl "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/adminController.js"
click node_users "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/models/User.js"
click node_evidencectrl "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/evidenceController.js"
click node_investigator "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/investigatorController.js"
click node_history "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/historyController.js"
click node_evidencemodel "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/models/Evidence.js"
click node_upload "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/middleware/uploadMiddleware.js"
click node_cloudinary "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/config/cloudinary.js"
click node_dbconfig "https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/config/db.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_adminui,node_http,node_user toneBlue
class node_server,node_authroutes,node_evidenceroutes,node_adminroutes,node_dbconfig,node_cloudinary_service toneAmber
class node_evidencectrl,node_investigator,node_history,node_evidencemodel,node_upload,node_cloudinary toneMint
class node_authmw,node_authctrl,node_adminctrl,node_users toneRose
```

## Components

### Web client

- [Application UI](https://github.com/vikasvikas5380-debug/proofpath/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Admin dashboard](https://github.com/vikasvikas5380-debug/proofpath/blob/main/client/src/AdminDashboard.jsx): `client/src/AdminDashboard.jsx`
- [HTTP client](https://github.com/vikasvikas5380-debug/proofpath/blob/main/client/src/api/axios.js): `client/src/api/axios.js`

### API routing

- [Express server](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/server.js): `server/server.js`
- [Auth routes](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Evidence routes](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/evidenceRoutes.js): `server/routes/evidenceRoutes.js`
- [Admin routes](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`
- [Database connection](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/config/db.js): `server/config/db.js`

### Evidence workflows

- [Evidence registration and verification](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/evidenceController.js): `server/controllers/evidenceController.js`
- [Investigator review](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/investigatorController.js): `server/controllers/investigatorController.js`
- [Activity history](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/historyController.js): `server/controllers/historyController.js`
- [Evidence records](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/models/Evidence.js): `server/models/Evidence.js`
- [Upload handling](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/middleware/uploadMiddleware.js): `server/middleware/uploadMiddleware.js`
- [Cloudinary storage](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/config/cloudinary.js): `server/config/cloudinary.js`

### Identity and administration

- [Authentication guards](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/middleware/authMiddleware.js): `server/middleware/authMiddleware.js`
- [Account access](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [Admin operations](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/controllers/adminController.js): `server/controllers/adminController.js`
- [User records](https://github.com/vikasvikas5380-debug/proofpath/blob/main/server/models/User.js): `server/models/User.js`

### Other components

- **User**
- **Cloudinary**

## Connections

- User → Application UI: uses
- Application UI → HTTP client: sends requests (evidence: `client/src/App.jsx`)
- Application UI → Admin dashboard: renders (evidence: `client/src/App.jsx`)
- Express server → Auth routes: mounts (evidence: `server/server.js`)
- Express server → Evidence routes: mounts (evidence: `server/server.js`)
- Express server → Admin routes: mounts (evidence: `server/server.js`)
- Express server → Database connection: connects through (evidence: `server/server.js`)
- Auth routes → Account access: dispatches (evidence: `server/routes/authRoutes.js`)
- Auth routes → Authentication guards: protects profile (evidence: `server/routes/authRoutes.js`)
- Evidence routes → Authentication guards: guards access (evidence: `server/routes/evidenceRoutes.js`)
- Evidence routes → Upload handling: handles uploads (evidence: `server/routes/evidenceRoutes.js`)
- Evidence routes → Evidence registration and verification: dispatches (evidence: `server/routes/evidenceRoutes.js`)
- Evidence routes → Activity history: dispatches (evidence: `server/routes/evidenceRoutes.js`)
- Evidence routes → Investigator review: dispatches (evidence: `server/routes/evidenceRoutes.js`)
- Admin routes → Authentication guards: guards access (evidence: `server/routes/adminRoutes.js`)
- Admin routes → Admin operations: dispatches (evidence: `server/routes/adminRoutes.js`)
- Account access → User records: reads and writes (evidence: `server/controllers/authController.js`)
- Authentication guards → User records: loads account (evidence: `server/middleware/authMiddleware.js`)
- Admin operations → User records: manages users (evidence: `server/controllers/adminController.js`)
- Admin operations → Evidence records: counts evidence (evidence: `server/controllers/adminController.js`)
- Evidence registration and verification → Evidence records: reads and writes (evidence: `server/controllers/evidenceController.js`)
- Evidence registration and verification → Cloudinary storage: uploads files (evidence: `server/controllers/evidenceController.js`)
- Cloudinary storage → Cloudinary: stores files
- Investigator review → Evidence records: reviews records (evidence: `server/controllers/investigatorController.js`)
- Activity history → Evidence records: reads history (evidence: `server/controllers/historyController.js`)
- HTTP client → Express server: calls API
