226 lines
6.8 KiB
Markdown
226 lines
6.8 KiB
Markdown
|
|
# Goa GEL Blockchain Document Verification Platform - Architecture Diagrams
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
This directory contains comprehensive architecture diagrams for the Goa Government E-License (GEL) Blockchain Document Verification Platform.
|
||
|
|
|
||
|
|
## Diagrams
|
||
|
|
|
||
|
|
### System Context Diagram
|
||
|
|
- **File:** `system-context.mermaid`
|
||
|
|
- **Type:** Mermaid Diagram
|
||
|
|
|
||
|
|
### Container Architecture
|
||
|
|
- **File:** `container-architecture.mermaid`
|
||
|
|
- **Type:** Mermaid Diagram
|
||
|
|
|
||
|
|
### Blockchain Architecture
|
||
|
|
- **File:** `blockchain-architecture.mermaid`
|
||
|
|
- **Type:** Mermaid Diagram
|
||
|
|
|
||
|
|
### Workflow State Machine
|
||
|
|
- **File:** `workflow-state-machine.mermaid`
|
||
|
|
- **Type:** Mermaid Diagram
|
||
|
|
|
||
|
|
### Data Flow Diagram
|
||
|
|
- **File:** `data-flow.mermaid`
|
||
|
|
- **Type:** Mermaid Diagram
|
||
|
|
|
||
|
|
### Deployment Architecture
|
||
|
|
- **File:** `deployment-architecture.mermaid`
|
||
|
|
- **Type:** Mermaid Diagram
|
||
|
|
|
||
|
|
|
||
|
|
## Converting Mermaid to PNG
|
||
|
|
|
||
|
|
### Option 1: Online Converter
|
||
|
|
Visit https://mermaid.live and:
|
||
|
|
1. Click "Upload File"
|
||
|
|
2. Select each .mermaid file
|
||
|
|
3. Click the download icon to export as PNG
|
||
|
|
|
||
|
|
### Option 2: Using Mermaid CLI (Local Installation)
|
||
|
|
```bash
|
||
|
|
# Install locally
|
||
|
|
npm install --save-dev @mermaid-js/mermaid-cli
|
||
|
|
|
||
|
|
# Convert all files
|
||
|
|
npx mmdc -i system-context.mermaid -o system-context.png -t dark -b transparent
|
||
|
|
npx mmdc -i container-architecture.mermaid -o container-architecture.png -t dark -b transparent
|
||
|
|
npx mmdc -i blockchain-architecture.mermaid -o blockchain-architecture.png -t dark -b transparent
|
||
|
|
npx mmdc -i workflow-state-machine.mermaid -o workflow-state-machine.png -t dark -b transparent
|
||
|
|
npx mmdc -i data-flow.mermaid -o data-flow.png -t dark -b transparent
|
||
|
|
npx mmdc -i deployment-architecture.mermaid -o deployment-architecture.png -t dark -b transparent
|
||
|
|
```
|
||
|
|
|
||
|
|
### Option 3: Using Docker
|
||
|
|
```bash
|
||
|
|
docker run --rm -v $(pwd):/data mermaid/mermaid-cli:latest \
|
||
|
|
-i /data/system-context.mermaid \
|
||
|
|
-o /data/system-context.png \
|
||
|
|
-t dark -b transparent
|
||
|
|
```
|
||
|
|
|
||
|
|
### Option 4: Browser Method
|
||
|
|
Open each .html file in a web browser and:
|
||
|
|
1. Press F12 to open DevTools
|
||
|
|
2. Use Chrome DevTools to capture the diagram as an image
|
||
|
|
3. Or use a screenshot tool
|
||
|
|
|
||
|
|
## Diagram Contents
|
||
|
|
|
||
|
|
### 1. system-context.mermaid
|
||
|
|
**C4 Level 1 Context Diagram**
|
||
|
|
- Shows the GEL platform as a black box
|
||
|
|
- External actors: Citizens, Government Departments, Department Operators, Platform Operators
|
||
|
|
- External systems: DigiLocker Mock, Legacy Department Systems, National Blockchain Federation (future)
|
||
|
|
|
||
|
|
### 2. container-architecture.mermaid
|
||
|
|
**C4 Level 2 Container Diagram**
|
||
|
|
- Frontend: Next.js 14 with shadcn/ui (Port 3000)
|
||
|
|
- Backend: NestJS API Gateway (Port 3001)
|
||
|
|
- Database: PostgreSQL (Port 5432)
|
||
|
|
- Cache: Redis (Port 6379)
|
||
|
|
- Storage: MinIO S3-compatible (Port 9000)
|
||
|
|
- Blockchain: Hyperledger Besu nodes
|
||
|
|
- Services: Auth, Workflow, Approval, Document
|
||
|
|
|
||
|
|
### 3. blockchain-architecture.mermaid
|
||
|
|
**Blockchain Layer Deep Dive**
|
||
|
|
- 4 Hyperledger Besu Validator Nodes (QBFT Consensus)
|
||
|
|
- RPC Ports: 8545-8548
|
||
|
|
- Smart Contracts:
|
||
|
|
- LicenseRequestNFT (ERC-721 Soulbound)
|
||
|
|
- ApprovalManager
|
||
|
|
- DepartmentRegistry
|
||
|
|
- WorkflowRegistry
|
||
|
|
- On-Chain vs Off-Chain Data Split
|
||
|
|
- Content Hashing (SHA-256) for Immutable Links
|
||
|
|
|
||
|
|
### 4. workflow-state-machine.mermaid
|
||
|
|
**License Request Workflow States**
|
||
|
|
States:
|
||
|
|
- DRAFT: Initial local draft
|
||
|
|
- SUBMITTED: Hash recorded on blockchain
|
||
|
|
- IN_REVIEW: Multi-department approval
|
||
|
|
- PENDING_RESUBMISSION: Changes requested
|
||
|
|
- APPROVED: License granted, NFT minted
|
||
|
|
- REJECTED: Request denied
|
||
|
|
- REVOKED: License cancelled
|
||
|
|
|
||
|
|
### 5. data-flow.mermaid
|
||
|
|
**Complete End-to-End Sequence**
|
||
|
|
11-Step Process:
|
||
|
|
1. License Request Submission
|
||
|
|
2. Document Upload & Hashing
|
||
|
|
3. Blockchain Recording
|
||
|
|
4. State Update to SUBMITTED
|
||
|
|
5. Route to Department 1 (Tourism)
|
||
|
|
6. Route to Department 2 (Fire Safety) - Parallel
|
||
|
|
7. Department 1 Approval
|
||
|
|
8. Department 2 Approval - Parallel
|
||
|
|
9. Final Approval Processing
|
||
|
|
10. Update Final State & Notifications
|
||
|
|
11. License Verification
|
||
|
|
|
||
|
|
### 6. deployment-architecture.mermaid
|
||
|
|
**Docker Compose Deployment**
|
||
|
|
Services:
|
||
|
|
- Frontend: Next.js (Port 3000)
|
||
|
|
- Backend: NestJS (Port 3001)
|
||
|
|
- Database: PostgreSQL (Port 5432)
|
||
|
|
- Cache: Redis (Port 6379)
|
||
|
|
- Storage: MinIO (Port 9000, 9001)
|
||
|
|
- Blockchain: 4x Besu Validators (Ports 8545-8548)
|
||
|
|
- Monitoring: Prometheus (9090), Grafana (3000 alt)
|
||
|
|
|
||
|
|
Volumes & Configuration Files
|
||
|
|
|
||
|
|
## Key Technical Decisions
|
||
|
|
|
||
|
|
### Blockchain
|
||
|
|
- **Platform:** Hyperledger Besu
|
||
|
|
- **Consensus:** QBFT (Quorum Byzantine Fault Tolerant)
|
||
|
|
- **Network Type:** Private Permissioned
|
||
|
|
- **Validators:** 4 nodes (requires 3/4 approval)
|
||
|
|
- **Block Time:** ~12 seconds
|
||
|
|
|
||
|
|
### Tokens
|
||
|
|
- **Standard:** ERC-721
|
||
|
|
- **Type:** Soulbound NFTs
|
||
|
|
- **Purpose:** Non-transferable license certificates
|
||
|
|
- **Metadata:** Immutable license details
|
||
|
|
|
||
|
|
### Backend
|
||
|
|
- **Framework:** NestJS (TypeScript)
|
||
|
|
- **Database:** PostgreSQL
|
||
|
|
- **File Storage:** MinIO (S3-compatible)
|
||
|
|
- **Cache:** Redis
|
||
|
|
|
||
|
|
### Frontend
|
||
|
|
- **Framework:** Next.js 14
|
||
|
|
- **UI:** shadcn/ui
|
||
|
|
- **State Management:** React Context/TanStack Query
|
||
|
|
- **Styling:** Tailwind CSS
|
||
|
|
|
||
|
|
### Authentication
|
||
|
|
- **POC Phase:** API Key + Secret
|
||
|
|
- **Future:** DigiLocker Integration (Mocked)
|
||
|
|
|
||
|
|
## Architecture Benefits
|
||
|
|
|
||
|
|
1. **Immutable Records**: Blockchain ensures license records cannot be tampered with
|
||
|
|
2. **Multi-Department Workflows**: Parallel or sequential approvals based on license type
|
||
|
|
3. **Transparent Verification**: Anyone can verify license authenticity on blockchain
|
||
|
|
4. **Scalability**: Off-chain document storage with on-chain hashing
|
||
|
|
5. **Auditability**: Complete audit trail of all state changes
|
||
|
|
6. **Privacy**: Permissioned network with department access controls
|
||
|
|
7. **Future-Proof**: NFT standard enables future interoperability
|
||
|
|
|
||
|
|
## Viewing Instructions
|
||
|
|
|
||
|
|
1. **Mermaid Live** (Easiest): https://mermaid.live
|
||
|
|
- Copy-paste content from .mermaid files
|
||
|
|
- Instant preview and export
|
||
|
|
|
||
|
|
2. **HTML Files** (Built-in Browser):
|
||
|
|
- Open system-context.html (and others) in any web browser
|
||
|
|
- Uses CDN-hosted mermaid.js for rendering
|
||
|
|
|
||
|
|
3. **PNG Export**:
|
||
|
|
- Follow the conversion options above
|
||
|
|
- Recommended: Use mermaid-cli or online converter
|
||
|
|
|
||
|
|
## File Listing
|
||
|
|
|
||
|
|
```
|
||
|
|
/sessions/cool-elegant-faraday/mnt/Goa-GEL/
|
||
|
|
├── system-context.mermaid
|
||
|
|
├── system-context.html
|
||
|
|
├── container-architecture.mermaid
|
||
|
|
├── container-architecture.html
|
||
|
|
├── blockchain-architecture.mermaid
|
||
|
|
├── blockchain-architecture.html
|
||
|
|
├── workflow-state-machine.mermaid
|
||
|
|
├── workflow-state-machine.html
|
||
|
|
├── data-flow.mermaid
|
||
|
|
├── data-flow.html
|
||
|
|
├── deployment-architecture.mermaid
|
||
|
|
├── deployment-architecture.html
|
||
|
|
├── convert.js
|
||
|
|
├── convert-to-png.js
|
||
|
|
└── README.md
|
||
|
|
```
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
1. Review all diagrams to understand system architecture
|
||
|
|
2. Use these for documentation and stakeholder presentations
|
||
|
|
3. Convert to PNG/SVG for inclusion in technical documentation
|
||
|
|
4. Share with team for feedback and refinement
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Generated:** 2026-02-03
|
||
|
|
**Platform:** Goa GEL Blockchain Document Verification
|
||
|
|
**Version:** POC 1.0
|