# samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system architecture

> Architecture diagram of the GitHub repository samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system, 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/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system
- Repository: https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system

## Overview

AaplaPramaanPatra is a role-based certificate management system with issuer workflows, student/admin dashboards, and public certificate verification. The principal issuance flow runs from the issuer dashboard through the API and issuer controller, persists certificate data in MySQL, and records a hash on the local blockchain; PDF generation supports certificate delivery. Public verification is a separate read-and-compare flow. The graph follows README-described capabilities where source excerpts are unavailable; those links are cited to the README rather than implying unsampled code was inspected.

Main entry points: [`frontend/src/App.jsx`](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/App.jsx) (Route application), [`backend/server.js`](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/server.js) (Express entry), [`backend/controllers/issuerController.js`](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/issuerController.js) (Issuer operations), [`frontend/src/pages/IssuerDashboard.jsx`](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/IssuerDashboard.jsx) (Issuer dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_authctx["Session context<br/>[AuthContext.jsx]"]
  node_issuerui["Issuer dashboard"]
  node_studentui["Student dashboard"]
  node_adminui["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_manageui["Admin management"]
  node_verifyui["Verification portal"]
  node_apiutil["API client<br/>[api.js]"]
end

subgraph group_api["API and access"]
  node_server["Express entry<br/>[server.js]"]
  node_authroutes["Authentication routes<br/>[authRoutes.js]"]
  node_issuerroutes["Issuer routes<br/>[issuerRoutes.js]"]
  node_adminroutes["Admin routes<br/>[adminRoutes.js]"]
  node_publicroutes["Public routes<br/>[publicRoutes.js]"]
  node_auth["Role and school access<br/>[authMiddleware.js]"]
end

subgraph group_workflows["Certificate workflows"]
  node_issuer["Issuer operations"]
  node_admin["Admin operations<br/>[adminController.js]"]
  node_student["Student operations"]
end

subgraph group_storage["Persistence and ledger"]
  node_mysql[("MySQL database<br/>[db.js]")]
  node_blockchain["Blockchain service"]
end

subgraph group_delivery["Verification and documents"]
  node_public["Public verification"]
  node_pdf["Certificate PDF<br/>[pdfService.js]"]
end

node_user(("Portal users"))
node_ganache[("Local Ganache")]

node_user -->|"opens portal"| node_app
node_app -->|"routes issuer"| node_issuerui
node_app -->|"routes student"| node_studentui
node_app -->|"routes admin"| node_adminui
node_app -->|"routes management"| node_manageui
node_app -->|"routes verification"| node_verifyui
node_issuerui -->|"calls API"| node_apiutil
node_issuerui -->|"reads session"| node_authctx
node_user -.->|"manages certificates"| node_issuerui
node_user -.->|"views dashboard"| node_studentui
node_user -.->|"administers portal"| node_adminui
node_user -.->|"checks certificate"| node_verifyui
node_apiutil -.->|"sends API requests"| node_server
node_server -->|"mounts routes"| node_authroutes
node_server -->|"mounts routes"| node_issuerroutes
node_server -->|"mounts routes"| node_adminroutes
node_server -->|"mounts routes"| node_publicroutes
node_issuerroutes -->|"applies access"| node_auth
node_adminroutes -->|"applies access"| node_auth
node_issuerroutes -->|"dispatches operations"| node_issuer
node_adminroutes -->|"dispatches operations"| node_admin
node_publicroutes -->|"dispatches verification"| node_public
node_issuer -->|"reads and writes"| node_mysql
node_issuer -->|"issues and updates"| node_blockchain
node_issuer -->|"generates document"| node_pdf
node_admin -->|"manages records"| node_mysql
node_student -->|"reads student records"| node_mysql
node_student -->|"requests document"| node_pdf
node_public -.->|"fetches certificate"| node_mysql
node_public -.->|"checks on-chain hash"| node_blockchain
node_blockchain -->|"uses local RPC"| node_ganache
node_user -.->|"scans QR"| node_verifyui

click node_app "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/App.jsx"
click node_authctx "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/context/AuthContext.jsx"
click node_issuerui "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/IssuerDashboard.jsx"
click node_studentui "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/StudentDashboard.jsx"
click node_adminui "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/AdminDashboard.jsx"
click node_manageui "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/ManageCertificates.jsx"
click node_verifyui "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/VerifyCertificate.jsx"
click node_apiutil "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/utils/api.js"
click node_server "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/server.js"
click node_authroutes "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/authRoutes.js"
click node_issuerroutes "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/issuerRoutes.js"
click node_adminroutes "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/adminRoutes.js"
click node_publicroutes "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/publicRoutes.js"
click node_auth "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/middleware/authMiddleware.js"
click node_issuer "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/issuerController.js"
click node_admin "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/adminController.js"
click node_student "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/studentController.js"
click node_public "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/publicController.js"
click node_pdf "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/services/pdfService.js"
click node_mysql "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/db.js"
click node_blockchain "https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/services/blockchainService.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_authctx,node_issuerui,node_studentui,node_adminui,node_manageui,node_verifyui,node_apiutil,node_user toneBlue
class node_server,node_authroutes,node_issuerroutes,node_adminroutes,node_publicroutes,node_auth,node_ganache toneAmber
class node_issuer,node_admin,node_student toneMint
class node_mysql,node_blockchain toneRose
class node_public,node_pdf toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Session context](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Issuer dashboard](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/IssuerDashboard.jsx): `frontend/src/pages/IssuerDashboard.jsx`
- [Student dashboard](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/StudentDashboard.jsx): `frontend/src/pages/StudentDashboard.jsx`
- [Admin dashboard](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/AdminDashboard.jsx): `frontend/src/pages/AdminDashboard.jsx`
- [Admin management](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/ManageCertificates.jsx): `frontend/src/pages/ManageCertificates.jsx`
- [Verification portal](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/pages/VerifyCertificate.jsx): `frontend/src/pages/VerifyCertificate.jsx`
- [API client](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/frontend/src/utils/api.js): `frontend/src/utils/api.js`

### API and access

- [Express entry](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/server.js): `backend/server.js`
- [Authentication routes](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/authRoutes.js): `backend/routes/authRoutes.js`
- [Issuer routes](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/issuerRoutes.js): `backend/routes/issuerRoutes.js`
- [Admin routes](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/adminRoutes.js): `backend/routes/adminRoutes.js`
- [Public routes](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/routes/publicRoutes.js): `backend/routes/publicRoutes.js`
- [Role and school access](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/middleware/authMiddleware.js): `backend/middleware/authMiddleware.js`

### Certificate workflows

- [Issuer operations](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/issuerController.js): `backend/controllers/issuerController.js`
- [Admin operations](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/adminController.js): `backend/controllers/adminController.js`
- [Student operations](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/studentController.js): `backend/controllers/studentController.js`

### Persistence and ledger

- [MySQL database](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/db.js): `backend/db.js`
- [Blockchain service](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/services/blockchainService.js): `backend/services/blockchainService.js`

### Verification and documents

- [Public verification](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/controllers/publicController.js): `backend/controllers/publicController.js`
- [Certificate PDF](https://github.com/samarthhhsase/aaplapramaanpatra-blockchain-based-certificate-verification-system/blob/main/backend/services/pdfService.js): `backend/services/pdfService.js`

### Other components

- **Portal users**
- **Local Ganache**

## Connections

- Portal users → Route application: opens portal (evidence: `frontend/src/App.jsx`)
- Route application → Issuer dashboard: routes issuer (evidence: `frontend/src/App.jsx`)
- Route application → Student dashboard: routes student (evidence: `frontend/src/App.jsx`)
- Route application → Admin dashboard: routes admin (evidence: `frontend/src/App.jsx`)
- Route application → Admin management: routes management (evidence: `frontend/src/App.jsx`)
- Route application → Verification portal: routes verification (evidence: `frontend/src/App.jsx`)
- Issuer dashboard → API client: calls API (evidence: `frontend/src/pages/IssuerDashboard.jsx`)
- Issuer dashboard → Session context: reads session (evidence: `frontend/src/pages/IssuerDashboard.jsx`)
- Portal users → Issuer dashboard: manages certificates
- Portal users → Student dashboard: views dashboard
- Portal users → Admin dashboard: administers portal
- Portal users → Verification portal: checks certificate
- API client → Express entry: sends API requests
- Express entry → Authentication routes: mounts routes (evidence: `backend/server.js`)
- Express entry → Issuer routes: mounts routes (evidence: `backend/server.js`)
- Express entry → Admin routes: mounts routes (evidence: `backend/server.js`)
- Express entry → Public routes: mounts routes (evidence: `backend/server.js`)
- Issuer routes → Role and school access: applies access (evidence: `backend/routes/issuerRoutes.js`)
- Admin routes → Role and school access: applies access (evidence: `backend/routes/adminRoutes.js`)
- Issuer routes → Issuer operations: dispatches operations (evidence: `backend/routes/issuerRoutes.js`)
- Admin routes → Admin operations: dispatches operations (evidence: `backend/routes/adminRoutes.js`)
- Public routes → Public verification: dispatches verification (evidence: `backend/routes/publicRoutes.js`)
- Issuer operations → MySQL database: reads and writes (evidence: `backend/controllers/issuerController.js`)
- Issuer operations → Blockchain service: issues and updates (evidence: `backend/controllers/issuerController.js`)
- Issuer operations → Certificate PDF: generates document (evidence: `backend/controllers/issuerController.js`)
- Admin operations → MySQL database: manages records (evidence: `backend/controllers/adminController.js`)
- Student operations → MySQL database: reads student records (evidence: `backend/controllers/studentController.js`)
- Student operations → Certificate PDF: requests document (evidence: `backend/controllers/studentController.js`)
- Public verification → MySQL database: fetches certificate
- Public verification → Blockchain service: checks on-chain hash
- Blockchain service → Local Ganache: uses local RPC (evidence: `backend/services/blockchainService.js`)
- Portal users → Verification portal: scans QR
