feat: Goa GEL Blockchain e-Licensing Platform - Full Stack Implementation

Complete implementation of the Goa Government e-Licensing platform with:

Backend:
- NestJS API with JWT authentication
- PostgreSQL database with Knex ORM
- Redis caching and session management
- MinIO document storage
- Hyperledger Besu blockchain integration
- Multi-department workflow system
- Comprehensive API tests (266/282 passing)

Frontend:
- Angular 21 with standalone components
- Angular Material + TailwindCSS UI
- Visual workflow builder
- Document upload with progress tracking
- Blockchain explorer integration
- Role-based dashboards (Admin, Department, Citizen)
- E2E tests with Playwright (37 tests)

Infrastructure:
- Docker Compose orchestration
- Blockscout blockchain explorer
- Development and production configurations
This commit is contained in:
Mahi
2026-02-07 10:23:29 -04:00
commit 80566bf0a2
441 changed files with 102418 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
[Node]
data-path="/var/lib/besu"
p2p-port=30303
p2p-host="0.0.0.0"
rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-port=8545
rpc-http-api=["ETH", "NET", "WEB3", "ADMIN", "QBFT"]
rpc-http-cors-origins=["http://localhost:3000", "http://localhost:3001", "http://localhost:8080"]
rpc-ws-enabled=true
rpc-ws-host="0.0.0.0"
rpc-ws-port=8546
rpc-ws-api=["ETH", "NET", "WEB3", "ADMIN", "QBFT"]
graphql-http-enabled=false
sync-mode="FAST"
pruning-enabled=true
pruning-blocks-retained=1024
block-gas-limit=6000000
max-peers=30
max-inbound-connections=10
max-outbound-connections=20
min-block-fill-percentage=80
miner-enabled=false
discovery-enabled=true
discovery-dns-url="enrtree://AKA3AM_xupxQufGBg7EspalDjrWT0RD94jj_qc52cpgfUmu@nodes.goa-gel.gov.in"
logging="INFO"
host-allowlist=["localhost", "127.0.0.1", "besu-validator-1", "besu-validator-2", "besu-validator-3", "besu-validator-4"]
[Network]
bootnodes=[
"enode://9723eb17ebf1d4d00aba7d9c1bf7b9e5ceae8e4f4cf9f9a6e8f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f@besu-validator-1:30303",
"enode://2711dc881909b83b5ec4009e8815ebdcf7eaea3c1f4cf9f9a6e8f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f@besu-validator-2:30303",
"enode://27c0ca7c79b26c325581434091beb595f38e8abc1f4cf9f9a6e8f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f@besu-validator-3:30303",
"enode://d96245571cac7631eac214ba82cbf90f1f1ea2811f4cf9f9a6e8f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f@besu-validator-4:30303"
]
[Consensus]
consensus="qbft"
[Metrics]
metrics-enabled=true
metrics-host="0.0.0.0"
metrics-port=9545
metrics-protocol="PROMETHEUS"
[Privacy]
privacy-enabled=false
[Gas]
target-gas-limit=6000000

View File

@@ -0,0 +1,45 @@
{
"config": {
"chainId": 1337,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"muirGlacierBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"arrowGlacierBlock": 0,
"grayGlacierBlock": 0,
"qbft": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 4,
"validaterroundrobintimeout": 0
}
},
"nonce": "0x0",
"timestamp": "0x58ee40ba",
"extraData": "0xf83ea00000000000000000000000000000000000000000000000000000000000000000d5949723eb17ebf1d4d00aba7d9c1bf7b9e5ceae8e4f4cf9f9a6e8f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f8e7f80c0",
"gasLimit": "0x47b760",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e652066617566742074six656c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"9723eb17ebf1d4d00aba7d9c1bf7b9e5ceae8e4": {
"balance": "0x200000000000000000000000000000000000000000000000000000000000000"
},
"2711dc881909b83b5ec4009e8815ebdcf7eaea3c": {
"balance": "0x200000000000000000000000000000000000000000000000000000000000000"
},
"27c0ca7c79b26c325581434091beb595f38e8abc": {
"balance": "0x200000000000000000000000000000000000000000000000000000000000000"
},
"d96245571cac7631eac214ba82cbf90f1f1ea281": {
"balance": "0x200000000000000000000000000000000000000000000000000000000000000"
}
}
}

View File

@@ -0,0 +1 @@
9f02d7c45e9e3f1a8b7d6c5e4f3a2b1c9f02d7c45e9e3f1a8b7d6c5e4f3a2b

View File

@@ -0,0 +1 @@
a1e8f2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9