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:
99
backend/package.json
Normal file
99
backend/package.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"name": "goa-gel-backend",
|
||||
"version": "1.0.0",
|
||||
"description": "Blockchain Document Verification Platform for Government of Goa",
|
||||
"author": "Government of Goa",
|
||||
"license": "PROPRIETARY",
|
||||
"scripts": {
|
||||
"build": "nest build",
|
||||
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
||||
"start": "nest start",
|
||||
"start:dev": "nest start --watch",
|
||||
"start:debug": "nest start --debug --watch",
|
||||
"start:prod": "node dist/main",
|
||||
"lint": "eslint \"{src,test}/**/*.ts\" --fix",
|
||||
"test": "jest",
|
||||
"test:watch": "jest --watch",
|
||||
"test:cov": "jest --coverage",
|
||||
"test:e2e": "jest --config ./test/jest-e2e.json",
|
||||
"knex": "knex --knexfile src/database/knexfile.ts",
|
||||
"migrate:make": "npm run knex -- migrate:make",
|
||||
"migrate:latest": "npm run knex -- migrate:latest",
|
||||
"migrate:rollback": "npm run knex -- migrate:rollback",
|
||||
"migrate:status": "npm run knex -- migrate:status",
|
||||
"seed:make": "npm run knex -- seed:make",
|
||||
"seed:run": "npm run knex -- seed:run"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nestjs/bull": "10.0.1",
|
||||
"@nestjs/common": "10.3.0",
|
||||
"@nestjs/config": "3.1.1",
|
||||
"@nestjs/core": "10.3.0",
|
||||
"@nestjs/jwt": "10.2.0",
|
||||
"@nestjs/passport": "10.0.3",
|
||||
"@nestjs/platform-express": "10.3.0",
|
||||
"@nestjs/swagger": "7.2.0",
|
||||
"@nestjs/throttler": "5.1.1",
|
||||
"bcrypt": "5.1.1",
|
||||
"bull": "4.12.0",
|
||||
"class-transformer": "0.5.1",
|
||||
"class-validator": "0.14.1",
|
||||
"compression": "1.7.4",
|
||||
"ethers": "6.10.0",
|
||||
"helmet": "7.1.0",
|
||||
"ioredis": "5.3.2",
|
||||
"joi": "17.12.0",
|
||||
"knex": "3.1.0",
|
||||
"minio": "7.1.3",
|
||||
"nest-winston": "1.9.4",
|
||||
"objection": "3.1.4",
|
||||
"passport": "0.7.0",
|
||||
"passport-jwt": "4.0.1",
|
||||
"pg": "8.11.3",
|
||||
"reflect-metadata": "0.1.14",
|
||||
"rxjs": "7.8.1",
|
||||
"uuid": "9.0.1",
|
||||
"winston": "3.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cli": "10.3.0",
|
||||
"@nestjs/schematics": "10.1.0",
|
||||
"@nestjs/testing": "10.3.0",
|
||||
"@types/bcrypt": "5.0.2",
|
||||
"@types/compression": "1.7.5",
|
||||
"@types/express": "4.17.21",
|
||||
"@types/jest": "29.5.11",
|
||||
"@types/multer": "1.4.11",
|
||||
"@types/node": "20.11.5",
|
||||
"@types/passport-jwt": "4.0.0",
|
||||
"@types/supertest": "6.0.2",
|
||||
"@types/uuid": "9.0.7",
|
||||
"@typescript-eslint/eslint-plugin": "6.19.0",
|
||||
"@typescript-eslint/parser": "6.19.0",
|
||||
"eslint": "8.56.0",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-plugin-prettier": "5.1.3",
|
||||
"jest": "29.7.0",
|
||||
"prettier": "3.2.4",
|
||||
"source-map-support": "0.5.21",
|
||||
"supertest": "6.3.4",
|
||||
"ts-jest": "29.1.2",
|
||||
"ts-loader": "9.5.1",
|
||||
"ts-node": "10.9.2",
|
||||
"tsconfig-paths": "4.2.0",
|
||||
"typescript": "5.3.3"
|
||||
},
|
||||
"jest": {
|
||||
"moduleFileExtensions": ["js", "json", "ts"],
|
||||
"rootDir": "src",
|
||||
"testRegex": ".*\\.spec\\.ts$",
|
||||
"transform": { "^.+\\.(t|j)s$": "ts-jest" },
|
||||
"collectCoverageFrom": ["**/*.(t|j)s"],
|
||||
"coverageDirectory": "../coverage",
|
||||
"testEnvironment": "node",
|
||||
"coverageThreshold": {
|
||||
"global": { "branches": 80, "functions": 80, "lines": 80, "statements": 80 }
|
||||
}
|
||||
},
|
||||
"engines": { "node": ">=18.0.0" }
|
||||
}
|
||||
Reference in New Issue
Block a user