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:
71
convert.js
Normal file
71
convert.js
Normal file
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Simple solution: Create a convert-to-html script that uses mermaid.js
|
||||
// Since we can't install globally, we'll create an HTML file for each diagram
|
||||
|
||||
const diagrams = [
|
||||
'system-context.mermaid',
|
||||
'container-architecture.mermaid',
|
||||
'blockchain-architecture.mermaid',
|
||||
'workflow-state-machine.mermaid',
|
||||
'data-flow.mermaid',
|
||||
'deployment-architecture.mermaid'
|
||||
];
|
||||
|
||||
const dir = __dirname;
|
||||
|
||||
diagrams.forEach(diagram => {
|
||||
const mermaidPath = path.join(dir, diagram);
|
||||
const htmlPath = path.join(dir, diagram.replace('.mermaid', '.html'));
|
||||
|
||||
if (fs.existsSync(mermaidPath)) {
|
||||
const content = fs.readFileSync(mermaidPath, 'utf8');
|
||||
|
||||
const html = `<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>${diagram.replace('.mermaid', '')}</title>
|
||||
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
background: #1a1a1a;
|
||||
color: #fff;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
h1 {
|
||||
text-align: center;
|
||||
color: #3b82f6;
|
||||
}
|
||||
.mermaid {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
background: transparent;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>${diagram.replace('.mermaid', '').replace(/-/g, ' ').toUpperCase()}</h1>
|
||||
<div class="mermaid">
|
||||
${content}
|
||||
</div>
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true, theme: 'dark' });
|
||||
mermaid.contentLoaded();
|
||||
</script>
|
||||
</body>
|
||||
</html>`;
|
||||
|
||||
fs.writeFileSync(htmlPath, html);
|
||||
console.log(`Created: ${htmlPath}`);
|
||||
}
|
||||
});
|
||||
|
||||
console.log('HTML conversion complete!');
|
||||
console.log('Open each .html file in a browser and use browser tools to export as PNG');
|
||||
Reference in New Issue
Block a user