Files
Goa-gel-fullstack/docs/architecture/INDEX.md

536 lines
17 KiB
Markdown
Raw Normal View History

# Goa GEL Blockchain Document Verification Platform - Architecture Diagrams
## Project Overview
This directory contains comprehensive C4 architecture diagrams and detailed technical documentation for the **Goa Government E-License (GEL) Blockchain Document Verification Platform** - a blockchain-based solution for managing multi-department approval workflows for government licenses and permits.
**Status**: POC Phase 1
**Created**: 2026-02-03
**Platform**: Hyperledger Besu + QBFT Consensus
---
## Directory Contents
### 📋 Mermaid Diagram Files (.mermaid)
These files contain the raw diagram definitions in Mermaid syntax:
| File | Description | C4 Level |
|------|-------------|----------|
| `system-context.mermaid` | C4 Context diagram showing the GEL platform and all external actors/systems | Level 1 |
| `container-architecture.mermaid` | C4 Container diagram detailing frontend, API, database, storage, and blockchain layers | Level 2 |
| `blockchain-architecture.mermaid` | Detailed blockchain layer with 4 Besu validators, smart contracts, and on-chain/off-chain data split | Level 3 |
| `workflow-state-machine.mermaid` | State machine showing license request and approval workflows | Business Logic |
| `data-flow.mermaid` | Complete 11-step end-to-end sequence diagram from license submission to verification | Sequence |
| `deployment-architecture.mermaid` | Docker Compose deployment topology with all services and networking | Infrastructure |
**Lines of Code**: 451 total
### 🌐 HTML Preview Files (.html)
Browser-viewable versions of each diagram using CDN-hosted mermaid.js:
| File | View In Browser |
|------|-----------------|
| `system-context.html` | Open in browser for interactive viewing |
| `container-architecture.html` | Open in browser for interactive viewing |
| `blockchain-architecture.html` | Open in browser for interactive viewing |
| `workflow-state-machine.html` | Open in browser for interactive viewing |
| `data-flow.html` | Open in browser for interactive viewing |
| `deployment-architecture.html` | Open in browser for interactive viewing |
**Quick Start**:
```bash
# On Linux/Mac
firefox system-context.html
# Or
google-chrome container-architecture.html
# Or just open in your default browser
open workflow-state-machine.html
```
### 📚 Documentation Files
| File | Purpose | Size |
|------|---------|------|
| `ARCHITECTURE_GUIDE.md` | Comprehensive 1000+ line technical guide covering all architectural aspects | 28 KB |
| `README.md` | Quick reference guide with diagram descriptions and PNG conversion instructions | 7 KB |
| `INDEX.md` | This file - directory guide and navigation | |
### 🛠️ Utility Scripts
| File | Purpose |
|------|---------|
| `convert.js` | Generate HTML preview files from mermaid definitions |
| `convert-to-png.js` | Provides PNG conversion instructions and guides |
| `screenshot-diagrams.js` | Kroki.io conversion attempts and multi-option guide |
---
## Quick Navigation
### I want to...
**Understand the system at a glance**
→ Open `system-context.html` in your browser
**See technical architecture details**
→ Read `ARCHITECTURE_GUIDE.md` Section 2-3, or open `container-architecture.html`
**Understand the blockchain layer**
→ Read `ARCHITECTURE_GUIDE.md` Section 3, or open `blockchain-architecture.html`
**Learn the approval workflow**
→ Read `ARCHITECTURE_GUIDE.md` Section 4, or open `workflow-state-machine.html`
**See the complete data flow**
→ Read `ARCHITECTURE_GUIDE.md` Section 5 (11-step process), or open `data-flow.html`
**Set up the development environment**
→ Read `ARCHITECTURE_GUIDE.md` Section 6, or view `deployment-architecture.html`
**Convert diagrams to PNG**
→ Read `README.md` (Options 1-5), or run `screenshot-diagrams.js`
**Get a technology overview**
→ Read `ARCHITECTURE_GUIDE.md` Section 7 (Benefits), or Section 8 (Future)
---
## Key Technical Specifications
### Blockchain
- **Platform**: Hyperledger Besu
- **Consensus**: QBFT (Quorum Byzantine Fault Tolerant)
- **Validators**: 4 nodes (requires 3/4 approval)
- **Block Time**: ~12 seconds
- **Network**: Private Permissioned
### Tokens
- **Standard**: ERC-721 Soulbound
- **Type**: Non-transferable license certificates
- **Smart Contracts**: 4 (LicenseRequestNFT, ApprovalManager, DepartmentRegistry, WorkflowRegistry)
### Backend
- **Framework**: NestJS (TypeScript)
- **Database**: PostgreSQL
- **Cache**: Redis
- **Storage**: MinIO (S3-compatible)
- **Port**: 3001
### Frontend
- **Framework**: Next.js 14
- **UI Components**: shadcn/ui
- **Styling**: Tailwind CSS
- **Port**: 3000
### Authentication (POC)
- **Method**: API Key + Secret
- **Future**: DigiLocker Integration (mocked)
---
## Diagram Descriptions
### 1. System Context Diagram
**Level**: C4 Context (Level 1)
**Type**: Context Map
**Viewers**: Non-technical stakeholders, Project managers
Shows the GEL platform as a black box with:
- **External Actors**: Citizens, Government Departments, Department Operators, Platform Operators
- **External Systems**: DigiLocker Mock, Legacy Department Systems, National Blockchain Federation
- **Relationships**: Information flows between actors and platform
**Key Insights**:
- Multi-stakeholder system with diverse user roles
- Integration with existing government infrastructure
- Future scalability through NBF integration
---
### 2. Container Architecture Diagram
**Level**: C4 Container (Level 2)
**Type**: Architecture Diagram
**Viewers**: Technical architects, DevOps engineers, Backend developers
Shows major system components:
- **Frontend**: Next.js 14 + shadcn/ui (Port 3000)
- **API Gateway**: NestJS with Auth, Workflow, Approval, Document services (Port 3001)
- **Database**: PostgreSQL for persistent storage (Port 5432)
- **Cache**: Redis for session and state management (Port 6379)
- **Storage**: MinIO for documents and certificates (Port 9000)
- **Blockchain**: Hyperledger Besu network (Port 8545+)
**Key Insights**:
- Layered architecture enables independent scaling
- Off-chain storage with on-chain hashing ensures efficiency
- Redis provides real-time state synchronization
---
### 3. Blockchain Architecture Diagram
**Level**: C4 Component (Level 3)
**Type**: Detailed Technical Diagram
**Viewers**: Blockchain developers, Smart contract engineers
Shows:
- **4 Validator Nodes**: QBFT consensus topology
- **Smart Contracts**:
- LicenseRequestNFT (ERC-721 Soulbound)
- ApprovalManager (records approvals)
- DepartmentRegistry (manages departments)
- WorkflowRegistry (defines workflows)
- **On-Chain Data**: NFT state, approvals, registry info
- **Off-Chain Data**: Document details, applicant info, workflow state
- **Data Linking**: SHA-256 hashing creates immutable bridge
**Key Insights**:
- Hybrid on-chain/off-chain approach optimizes cost and performance
- QBFT requires 3/4 validator agreement for finality
- Hashing ensures off-chain data integrity
---
### 4. Workflow State Machine Diagram
**Level**: Business Logic
**Type**: State Diagram
**Viewers**: Business analysts, QA engineers, Product managers
Shows:
- **Request States**: DRAFT → SUBMITTED → IN_REVIEW → APPROVED/REJECTED/REVOKED
- **Approval States**: PENDING → APPROVED/REJECTED/CHANGES_REQUESTED
- **Transitions**: Rules for moving between states
- **Terminal States**: APPROVED, REJECTED (with paths for reapplication)
**Key Insights**:
- Supports iterative approval processes (PENDING_RESUBMISSION)
- Multi-department flexibility (parallel or sequential)
- Clear audit trail with state history
---
### 5. Data Flow Diagram
**Level**: Sequence
**Type**: Sequence Diagram
**Viewers**: Integration engineers, Backend developers, QA team
11-Step Process:
1. License Request Creation
2. Document Upload & Hashing
3. Blockchain Hash Recording
4. State Update to SUBMITTED
5. Route to Department 1 (parallel)
6. Route to Department 2 (parallel)
7. Department 1 Approval
8. Department 2 Approval (parallel)
9. Final Approval & NFT Minting
10. Notifications & State Update
11. License Verification
**Key Insights**:
- Parallel approvals reduce total approval time
- Immutable blockchain recording ensures accountability
- WebSocket notifications keep stakeholders informed
- Verification requires only blockchain query (decentralized)
---
### 6. Deployment Architecture Diagram
**Level**: Infrastructure
**Type**: Deployment Diagram
**Viewers**: DevOps engineers, System administrators, Infrastructure team
Shows:
- **Docker Compose Setup**: All services containerized
- **Networking**: gel-network bridge with defined subnets
- **Volumes**: Named volumes for persistent data
- **Service Dependencies**: Build order and healthchecks
- **Monitoring**: Prometheus & Grafana integration
- **Port Mappings**: All service ports clearly labeled
**Key Insights**:
- Single docker-compose file enables reproducible deployments
- Health checks ensure service reliability
- Monitoring integration enables production observability
- Volumes ensure data persistence across restarts
---
## Viewing the Diagrams
### Option 1: Browser Preview (Recommended for Quick Review)
Open any .html file in your web browser:
```bash
# Examples
firefox /sessions/cool-elegant-faraday/mnt/Goa-GEL/system-context.html
google-chrome /sessions/cool-elegant-faraday/mnt/Goa-GEL/container-architecture.html
open /sessions/cool-elegant-faraday/mnt/Goa-GEL/workflow-state-machine.html # macOS
```
Benefits:
- No installation required
- Instant rendering
- Interactive viewing
- Works offline (after loading)
### Option 2: Mermaid Live (Online, Interactive)
Visit https://mermaid.live and:
1. Click "Paste into editor"
2. Copy content from any .mermaid file
3. Instant visualization
4. Export as PNG, SVG, PDF
### Option 3: Convert to PNG
See `README.md` for 5 different conversion methods:
1. **Mermaid Live** - Easiest, no installation
2. **NPM CLI** - Local installation
3. **Docker** - Containerized conversion
4. **Browser DevTools** - Manual screenshot
5. **Kroki.io** - Online API service
---
## Smart Contract Details
### LicenseRequestNFT (ERC-721 Soulbound)
```solidity
// Non-transferable license certificates
// Functions: mint(), burn(), ownerOf(), tokenURI()
// Properties: Cannot be sold or transferred
// Use Case: Permanent license ownership record
```
**Key Features**:
- ERC-721 standard compliance
- Soulbound (non-transferable)
- Metadata stored in MinIO, URI on-chain
- Immutable once issued
### ApprovalManager
```solidity
// Records multi-department approvals
// Functions: recordApproval(), recordRejection(), requestChanges()
// Data: Complete approval chain with signatures
// Use Case: Transparent approval workflow
```
**Key Features**:
- Approval signatures prevent repudiation
- Full history queryable on-chain
- Reason tracking for rejections
- Change request details stored
### DepartmentRegistry
```solidity
// Manages department information
// Functions: registerDepartment(), setApprovers(), getApprovers()
// Use Case: Access control and authority verification
```
**Key Features**:
- Department metadata storage
- Approver list management
- Active/inactive status tracking
### WorkflowRegistry
```solidity
// Defines license approval workflows
// Functions: defineWorkflow(), getWorkflow(), getNextApprovers()
// Use Case: Flexible workflow configuration
```
**Key Features**:
- License-type specific workflows
- Sequential or parallel approval modes
- Timeout configurations
- Department ordering
---
## Database Schema (PostgreSQL)
### Key Tables
```sql
-- License Requests
license_requests (
id, applicant_id, license_type, status,
blockchain_tx_hash, blockchain_block_num,
nft_token_id, created_at, submitted_at, approved_at
)
-- Multi-Department Approvals
approvals (
id, license_id, department, status,
reviewed_by, reviewed_at, comments, signature
)
-- Document Metadata
documents (
id, license_id, filename, content_hash,
file_size, file_type, uploaded_at, minio_path
)
-- Audit Logs
audit_logs (
id, license_id, action, user_id,
old_status, new_status, timestamp
)
-- Department Registry
departments (
id, name, is_active, metadata,
created_at, updated_at
)
```
---
## File Locations
All files are located in:
```
/sessions/cool-elegant-faraday/mnt/Goa-GEL/
```
### Complete File List
```
├── system-context.mermaid (40 lines)
├── system-context.html (76 lines)
├── container-architecture.mermaid (64 lines)
├── container-architecture.html (100 lines)
├── blockchain-architecture.mermaid (75 lines)
├── blockchain-architecture.html (111 lines)
├── workflow-state-machine.mermaid (65 lines)
├── workflow-state-machine.html (101 lines)
├── data-flow.mermaid (105 lines)
├── data-flow.html (141 lines)
├── deployment-architecture.mermaid (102 lines)
├── deployment-architecture.html (138 lines)
├── convert.js (71 lines)
├── convert-to-png.js (235 lines)
├── screenshot-diagrams.js (156 lines)
├── README.md (225 lines)
├── ARCHITECTURE_GUIDE.md (1018 lines)
└── INDEX.md (this file)
```
**Total**: 2,823 lines of diagrams, code, and documentation
---
## Getting Started
### Step 1: View Diagrams
Open any .html file in your web browser to see the diagrams rendered.
### Step 2: Read Documentation
Start with `README.md` for an overview, then read specific sections in `ARCHITECTURE_GUIDE.md` based on your role:
- **Project Manager**: Sections 1, 7, 8
- **Backend Developer**: Sections 2, 3, 5, 6
- **Frontend Developer**: Section 2 (Frontend Layer)
- **DevOps Engineer**: Sections 3 (Blockchain), 6 (Deployment)
- **Blockchain Developer**: Sections 3 (Smart Contracts)
- **QA/Tester**: Sections 4, 5 (Workflows)
### Step 3: Understand the Flow
Review the data flow diagram (Section 5) to understand the complete end-to-end process.
### Step 4: Plan Implementation
Use the deployment architecture (Section 6) and smart contract details (Section 3) to begin development.
---
## Key Takeaways
### Architecture Highlights
**Multi-layered design** separates concerns and enables scaling
**Hybrid blockchain approach** optimizes cost and performance
**Immutable records** prevent tampering and ensure trust
**Parallel workflows** reduce approval time
**Soulbound NFTs** enable non-transferable license ownership
**Open standards** (ERC-721, REST API) ensure interoperability
### Technical Strengths
**QBFT Consensus** ensures high finality (3/4 Byzantine fault tolerant)
**Off-chain storage** with on-chain hashing optimizes costs
**Real-time caching** via Redis reduces database load
**Docker Compose** enables reproducible deployments
**Comprehensive audit trail** supports compliance and investigations
### Business Benefits
**Transparent verification** builds citizen trust
**Multi-department coordination** streamlines approvals
**Immutable certificates** prevent fraud
**Future interoperability** via blockchain standards
**Scalable architecture** supports growth
---
## Support & Questions
For questions about specific diagrams or architecture decisions:
1. **System Context**: See ARCHITECTURE_GUIDE.md Section 1
2. **Container Architecture**: See ARCHITECTURE_GUIDE.md Section 2
3. **Blockchain Details**: See ARCHITECTURE_GUIDE.md Section 3
4. **Workflows**: See ARCHITECTURE_GUIDE.md Section 4
5. **Data Flow**: See ARCHITECTURE_GUIDE.md Section 5
6. **Deployment**: See ARCHITECTURE_GUIDE.md Section 6
7. **Conversion Help**: See README.md (Options 1-5)
---
## Appendix: Technology Stack Summary
| Component | Technology | Version | Purpose |
|-----------|-----------|---------|---------|
| Blockchain | Hyperledger Besu | Latest | QBFT consensus, smart contracts |
| Consensus | QBFT | - | Byzantine fault tolerant agreement |
| Tokens | ERC-721 Soulbound | - | Non-transferable licenses |
| Backend | NestJS | TypeScript | REST API, business logic |
| Database | PostgreSQL | 15+ | Persistent data storage |
| Cache | Redis | 7+ | Session, state management |
| Storage | MinIO | Latest | S3-compatible file storage |
| Frontend | Next.js | 14+ | React-based UI |
| UI Components | shadcn/ui | Latest | Accessible components |
| Styling | Tailwind CSS | Latest | Utility-first CSS |
| DevOps | Docker Compose | Latest | Containerization, orchestration |
| Monitoring | Prometheus | Latest | Metrics collection |
| Visualization | Grafana | Latest | Dashboard creation |
---
**Document Version**: 1.0
**Created**: 2026-02-03
**Platform**: Goa GEL (Government E-License)
**Phase**: POC 1.0
**Status**: Complete
**Diagrams**: 6 (C4 + Business Logic)
**Documentation**: 1,243 lines
**Total Artifacts**: 18 files
---
*For the latest version of these diagrams, visit the source directory.*