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:
50
backend/docker/besu/config.toml
Normal file
50
backend/docker/besu/config.toml
Normal 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
|
||||
45
backend/docker/besu/genesis.json
Normal file
45
backend/docker/besu/genesis.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
backend/docker/besu/node-keys/validator-1/key
Normal file
1
backend/docker/besu/node-keys/validator-1/key
Normal file
@@ -0,0 +1 @@
|
||||
9f02d7c45e9e3f1a8b7d6c5e4f3a2b1c9f02d7c45e9e3f1a8b7d6c5e4f3a2b
|
||||
1
backend/docker/besu/node-keys/validator-2/key
Normal file
1
backend/docker/besu/node-keys/validator-2/key
Normal file
@@ -0,0 +1 @@
|
||||
a1e8f2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9
|
||||
Reference in New Issue
Block a user