{ "type": "excalidraw", "version": 2, "source": "https://excalidraw.com", "elements": [ { "id": "title-text", "type": "text", "x": 400, "y": 30, "width": 400, "height": 45, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "CVE Dashboard Architecture", "fontSize": 36, "fontFamily": 1, "textAlign": "center", "verticalAlign": "top", "baseline": 32, "containerId": null, "originalText": "CVE Dashboard Architecture" }, { "id": "users-box", "type": "ellipse", "x": 500, "y": 120, "width": 200, "height": 80, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#e7f5ff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 2, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ { "type": "text", "id": "users-text" }, { "id": "arrow-users-frontend", "type": "arrow" } ], "updated": 1, "link": null, "locked": false }, { "id": "users-text", "type": "text", "x": 505, "y": 145, "width": 190, "height": 30, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 3, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Users\n(Admin/Editor/Viewer)", "fontSize": 16, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "baseline": 23, "containerId": "users-box", "originalText": "Users\n(Admin/Editor/Viewer)" }, { "id": "frontend-box", "type": "rectangle", "x": 450, "y": 250, "width": 300, "height": 120, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 4, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ { "type": "text", "id": "frontend-text" }, { "id": "arrow-users-frontend", "type": "arrow" }, { "id": "arrow-frontend-backend", "type": "arrow" } ], "updated": 1, "link": null, "locked": false }, { "id": "frontend-text", "type": "text", "x": 455, "y": 255, "width": 290, "height": 110, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 5, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Frontend (React)\nPort: 3000\n\n• React 18 + Tailwind CSS\n• Auth Context\n• Components: Login, UserMenu,\n UserManagement, CVE Views", "fontSize": 14, "fontFamily": 1, "textAlign": "left", "verticalAlign": "middle", "baseline": 103, "containerId": "frontend-box", "originalText": "Frontend (React)\nPort: 3000\n\n• React 18 + Tailwind CSS\n• Auth Context\n• Components: Login, UserMenu,\n UserManagement, CVE Views" }, { "id": "backend-box", "type": "rectangle", "x": 400, "y": 420, "width": 400, "height": 180, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "#d0bfff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 6, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ { "type": "text", "id": "backend-text" }, { "id": "arrow-frontend-backend", "type": "arrow" }, { "id": "arrow-backend-db", "type": "arrow" }, { "id": "arrow-backend-storage", "type": "arrow" }, { "id": "arrow-backend-nvd", "type": "arrow" } ], "updated": 1, "link": null, "locked": false }, { "id": "backend-text", "type": "text", "x": 405, "y": 425, "width": 390, "height": 170, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 7, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Backend API (Express.js)\nPort: 3001\n\nRoutes:\n• /api/auth - Authentication (login/logout)\n• /api/users - User management\n• /api/cves - CVE operations\n• /api/documents - Document upload/download\n• /api/audit-log - Audit logging\n• /api/nvd-lookup - NVD integration\n• /api/weekly-reports - Weekly reports", "fontSize": 14, "fontFamily": 1, "textAlign": "left", "verticalAlign": "middle", "baseline": 163, "containerId": "backend-box", "originalText": "Backend API (Express.js)\nPort: 3001\n\nRoutes:\n• /api/auth - Authentication (login/logout)\n• /api/users - User management\n• /api/cves - CVE operations\n• /api/documents - Document upload/download\n• /api/audit-log - Audit logging\n• /api/nvd-lookup - NVD integration\n• /api/weekly-reports - Weekly reports" }, { "id": "db-box", "type": "rectangle", "x": 200, "y": 680, "width": 280, "height": 140, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 8, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ { "type": "text", "id": "db-text" }, { "id": "arrow-backend-db", "type": "arrow" } ], "updated": 1, "link": null, "locked": false }, { "id": "db-text", "type": "text", "x": 205, "y": 685, "width": 270, "height": 130, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 9, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "SQLite Database\ncve_database.db\n\nTables:\n• cves\n• documents\n• users\n• sessions\n• required_documents\n• audit_log", "fontSize": 14, "fontFamily": 1, "textAlign": "left", "verticalAlign": "middle", "baseline": 123, "containerId": "db-box", "originalText": "SQLite Database\ncve_database.db\n\nTables:\n• cves\n• documents\n• users\n• sessions\n• required_documents\n• audit_log" }, { "id": "storage-box", "type": "rectangle", "x": 550, "y": 680, "width": 280, "height": 140, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "#ffec99", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 10, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ { "type": "text", "id": "storage-text" }, { "id": "arrow-backend-storage", "type": "arrow" } ], "updated": 1, "link": null, "locked": false }, { "id": "storage-text", "type": "text", "x": 555, "y": 685, "width": 270, "height": 130, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 11, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "File Storage\nuploads/\n\nStructure:\nCVE-ID/\n Vendor/\n documents.pdf\n\n• Multi-vendor support\n• Timestamped filenames", "fontSize": 14, "fontFamily": 1, "textAlign": "left", "verticalAlign": "middle", "baseline": 123, "containerId": "storage-box", "originalText": "File Storage\nuploads/\n\nStructure:\nCVE-ID/\n Vendor/\n documents.pdf\n\n• Multi-vendor support\n• Timestamped filenames" }, { "id": "nvd-box", "type": "rectangle", "x": 900, "y": 420, "width": 220, "height": 100, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "#ffc9c9", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 12, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ { "type": "text", "id": "nvd-text" }, { "id": "arrow-backend-nvd", "type": "arrow" } ], "updated": 1, "link": null, "locked": false }, { "id": "nvd-text", "type": "text", "x": 905, "y": 425, "width": 210, "height": 90, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 13, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "NVD API\n(External)\n\nNational Vulnerability\nDatabase\n\nAutomatic CVE lookup", "fontSize": 14, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "baseline": 83, "containerId": "nvd-box", "originalText": "NVD API\n(External)\n\nNational Vulnerability\nDatabase\n\nAutomatic CVE lookup" }, { "id": "arrow-users-frontend", "type": "arrow", "x": 600, "y": 200, "width": 0, "height": 50, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "round", "seed": 14, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [ [0, 0], [0, 50] ], "lastCommittedPoint": null, "startBinding": { "elementId": "users-box", "focus": 0, "gap": 1 }, "endBinding": { "elementId": "frontend-box", "focus": 0, "gap": 1 }, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false, "roundness": null }, { "id": "arrow-frontend-backend", "type": "arrow", "x": 600, "y": 370, "width": 0, "height": 50, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "round", "seed": 15, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [ [0, 0], [0, 50] ], "lastCommittedPoint": null, "startBinding": { "elementId": "frontend-box", "focus": 0, "gap": 1 }, "endBinding": { "elementId": "backend-box", "focus": 0, "gap": 1 }, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false, "roundness": null }, { "id": "arrow-backend-db", "type": "arrow", "x": 500, "y": 600, "width": -140, "height": 80, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "round", "seed": 16, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [ [0, 0], [-140, 0], [-140, 80] ], "lastCommittedPoint": null, "startBinding": { "elementId": "backend-box", "focus": 0, "gap": 1 }, "endBinding": { "elementId": "db-box", "focus": 0, "gap": 1 }, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true, "roundness": null }, { "id": "arrow-backend-storage", "type": "arrow", "x": 700, "y": 600, "width": 0, "height": 80, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "round", "seed": 17, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [ [0, 0], [0, 80] ], "lastCommittedPoint": null, "startBinding": { "elementId": "backend-box", "focus": 0.5, "gap": 1 }, "endBinding": { "elementId": "storage-box", "focus": 0.5, "gap": 1 }, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false, "roundness": null }, { "id": "arrow-backend-nvd", "type": "arrow", "x": 800, "y": 480, "width": 100, "height": 0, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "round", "seed": 18, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [ [0, 0], [100, 0] ], "lastCommittedPoint": null, "startBinding": { "elementId": "backend-box", "focus": 0, "gap": 1 }, "endBinding": { "elementId": "nvd-box", "focus": 0, "gap": 1 }, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false, "roundness": null }, { "id": "label-http", "type": "text", "x": 610, "y": 390, "width": 100, "height": 20, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 19, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "HTTP/REST API", "fontSize": 12, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "baseline": 17, "containerId": null, "originalText": "HTTP/REST API" }, { "id": "label-https", "type": "text", "x": 820, "y": 460, "width": 60, "height": 20, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 20, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "HTTPS", "fontSize": 12, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "baseline": 17, "containerId": null, "originalText": "HTTPS" }, { "id": "auth-note", "type": "text", "x": 100, "y": 250, "width": 280, "height": 80, "angle": 0, "strokeColor": "#495057", "backgroundColor": "#f8f9fa", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 21, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Authentication:\n• Session-based auth\n• bcrypt password hashing\n• Role-based access control\n (Admin/Editor/Viewer)", "fontSize": 12, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "baseline": 73, "containerId": null, "originalText": "Authentication:\n• Session-based auth\n• bcrypt password hashing\n• Role-based access control\n (Admin/Editor/Viewer)" }, { "id": "features-note", "type": "text", "x": 900, "y": 580, "width": 280, "height": 120, "angle": 0, "strokeColor": "#495057", "backgroundColor": "#f8f9fa", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 22, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Key Features:\n• Quick CVE status check\n• Multi-vendor support\n• Document management\n• Compliance tracking\n• Search & filter\n• Weekly report uploads\n• Audit logging", "fontSize": 12, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "baseline": 113, "containerId": null, "originalText": "Key Features:\n• Quick CVE status check\n• Multi-vendor support\n• Document management\n• Compliance tracking\n• Search & filter\n• Weekly report uploads\n• Audit logging" } ], "appState": { "gridSize": null, "viewBackgroundColor": "#ffffff" }, "files": {} }