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
72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
#!/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');
|