- Replace TLAS with License Authority throughout documentation - Add Government of Goa emblem/logo (Ashoka Chakra style) - Update frontend branding to match documentation - Add configurable Swagger API link via VITE_API_BASE_URL env var - Fix Docker build for VitePress (git dependency, .dockerignore) - Fix helmet security headers for HTTP deployments - Add CORS support for VM deployment Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
75 lines
7.0 KiB
Markdown
75 lines
7.0 KiB
Markdown
# Architecture Overview
|
|
|
|
## System Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ License Authority Platform │
|
|
├─────────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────┐ │
|
|
│ │ Presentation Layer │ │
|
|
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
|
|
│ │ │ Citizen │ │ Department │ │ Admin │ │ │
|
|
│ │ │ Portal │ │ Portal │ │ Console │ │ │
|
|
│ │ │ (Angular) │ │ (Angular) │ │ (Angular) │ │ │
|
|
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────┘ │
|
|
│ │ │
|
|
│ ┌─────────────────────────────────────────────────────────────┐ │
|
|
│ │ Application Layer │ │
|
|
│ │ │ │
|
|
│ │ ┌─────────────────────────────────────────────────────┐ │ │
|
|
│ │ │ API Gateway (NestJS) │ │ │
|
|
│ │ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │ │
|
|
│ │ │ │ Auth │ │Applications│ │ Documents │ │ │ │
|
|
│ │ │ │ Module │ │ Module │ │ Module │ │ │ │
|
|
│ │ │ └───────────┘ └───────────┘ └───────────┘ │ │ │
|
|
│ │ └─────────────────────────────────────────────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────┘ │
|
|
│ │ │
|
|
│ ┌─────────────────────────────────────────────────────────────┐ │
|
|
│ │ Data Layer │ │
|
|
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
|
|
│ │ │ PostgreSQL │ │ Redis │ │ File Store │ │ │
|
|
│ │ │ (Primary) │ │ (Cache) │ │ (Documents) │ │ │
|
|
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────┘ │
|
|
│ │ │
|
|
│ ┌─────────────────────────────────────────────────────────────┐ │
|
|
│ │ Blockchain Layer │ │
|
|
│ │ ┌────────────────────────────────────────────────────┐ │ │
|
|
│ │ │ Hyperledger Besu Network │ │ │
|
|
│ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │
|
|
│ │ │ │ NFT Smart │ │ Ledger │ │ │ │
|
|
│ │ │ │ Contract │ │ Storage │ │ │ │
|
|
│ │ │ └─────────────┘ └─────────────┘ │ │ │
|
|
│ │ └────────────────────────────────────────────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Key Design Decisions
|
|
|
|
| Decision | Rationale |
|
|
|----------|-----------|
|
|
| Angular SPA | Rich interactive UI, offline capability |
|
|
| NestJS Backend | TypeScript consistency, modular architecture |
|
|
| PostgreSQL | ACID compliance, JSON support, proven reliability |
|
|
| Hyperledger Besu | Ethereum-compatible, enterprise features, private network |
|
|
| Docker Containers | Consistent deployment, scalability |
|
|
|
|
## Data Flow
|
|
|
|
1. **Application Submission**: User → Frontend → API → Database → Workflow Engine
|
|
2. **Document Upload**: User → Frontend → API → File Storage → Hash to Blockchain
|
|
3. **Certificate Issuance**: Approval → Smart Contract → NFT Minted → Certificate Generated
|
|
|
|
## Scalability
|
|
|
|
- Horizontal scaling: Multiple API instances behind load balancer
|
|
- Database scaling: Read replicas for query load
|
|
- Caching: Redis for session and query caching
|
|
- Async processing: Queue-based document processing
|