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:
72
backend/src/modules/documents/dto/document-response.dto.ts
Normal file
72
backend/src/modules/documents/dto/document-response.dto.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
|
||||
export class DocumentResponseDto {
|
||||
@ApiProperty({
|
||||
description: 'Document ID (UUID)',
|
||||
})
|
||||
id: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Request ID (UUID)',
|
||||
})
|
||||
requestId: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Document type',
|
||||
example: 'FIRE_SAFETY_CERTIFICATE',
|
||||
})
|
||||
docType: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Original filename',
|
||||
})
|
||||
originalFilename: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Current version number',
|
||||
})
|
||||
currentVersion: number;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'SHA-256 hash of current version',
|
||||
})
|
||||
currentHash: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'SHA-256 hash of current version (alias)',
|
||||
required: false,
|
||||
})
|
||||
fileHash?: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'MinIO bucket name',
|
||||
})
|
||||
minioBucket: string;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Whether document is active',
|
||||
})
|
||||
isActive: boolean;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Number of times the document has been downloaded',
|
||||
required: false,
|
||||
})
|
||||
downloadCount?: number;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Timestamp of last download',
|
||||
required: false,
|
||||
})
|
||||
lastDownloadedAt?: Date;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Document creation timestamp',
|
||||
})
|
||||
createdAt: Date;
|
||||
|
||||
@ApiProperty({
|
||||
description: 'Document last update timestamp',
|
||||
})
|
||||
updatedAt: Date;
|
||||
}
|
||||
Reference in New Issue
Block a user