{ "type": "excalidraw", "version": 2, "source": "https://excalidraw.com", "elements": [ { "id": "title", "type": "text", "x": 100, "y": 20, "width": 700, "height": 45, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Apophis SOC Dashboard - Application Architecture", "fontSize": 32, "fontFamily": 1, "textAlign": "center", "verticalAlign": "top", "containerId": null, "originalText": "Apophis SOC Dashboard - Application Architecture", "lineHeight": 1.25 }, { "id": "browser", "type": "ellipse", "x": 350, "y": 100, "width": 200, "height": 80, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#e7f5ff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "browser-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "browser-text", "type": "text", "x": 360, "y": 125, "width": 180, "height": 25, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Web Browser", "fontSize": 18, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "browser", "originalText": "Web Browser", "lineHeight": 1.25 }, { "id": "vite", "type": "rectangle", "x": 325, "y": 220, "width": 250, "height": 80, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "#d0bfff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "vite-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "vite-text", "type": "text", "x": 335, "y": 230, "width": 230, "height": 55, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Vite 7 Dev Server\nlocalhost:5173\nHMR + Fast Refresh", "fontSize": 14, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "vite", "originalText": "Vite 7 Dev Server\nlocalhost:5173\nHMR + Fast Refresh", "lineHeight": 1.25 }, { "id": "app", "type": "rectangle", "x": 300, "y": 340, "width": 300, "height": 100, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "#ffa8a8", "fillStyle": "solid", "strokeWidth": 3, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "app-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "app-text", "type": "text", "x": 310, "y": 350, "width": 280, "height": 75, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "App.jsx (Root Component)\nReact 19 + State Management\nGrid Layout (12-col, 3-row)\nAuto-refresh intervals", "fontSize": 14, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "app", "originalText": "App.jsx (Root Component)\nReact 19 + State Management\nGrid Layout (12-col, 3-row)\nAuto-refresh intervals", "lineHeight": 1.25 }, { "id": "header", "type": "rectangle", "x": 50, "y": 500, "width": 180, "height": 90, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "header-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "header-text", "type": "text", "x": 60, "y": 510, "width": 160, "height": 65, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Header\n• Logo\n• System Clock\n• Threat Level", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "header", "originalText": "Header\n• Logo\n• System Clock\n• Threat Level", "lineHeight": 1.25 }, { "id": "threatfeed", "type": "rectangle", "x": 260, "y": 500, "width": 180, "height": 90, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "#ffc9c9", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "threatfeed-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "threatfeed-text", "type": "text", "x": 270, "y": 510, "width": 160, "height": 65, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "ThreatFeed\n• Live Alerts\n• Severity Colors\n• Auto-scroll", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "threatfeed", "originalText": "ThreatFeed\n• Live Alerts\n• Severity Colors\n• Auto-scroll", "lineHeight": 1.25 }, { "id": "networktraffic", "type": "rectangle", "x": 470, "y": 500, "width": 180, "height": 90, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "networktraffic-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "networktraffic-text", "type": "text", "x": 480, "y": 510, "width": 160, "height": 65, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "NetworkTraffic\n• Area Chart\n• Recharts\n• In/Out/Block", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "networktraffic", "originalText": "NetworkTraffic\n• Area Chart\n• Recharts\n• In/Out/Block", "lineHeight": 1.25 }, { "id": "systemhealth", "type": "rectangle", "x": 680, "y": 500, "width": 180, "height": 90, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "systemhealth-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "systemhealth-text", "type": "text", "x": 690, "y": 510, "width": 160, "height": 65, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "SystemHealth\n• Status Cards\n• Uptime\n• CPU/Memory", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "systemhealth", "originalText": "SystemHealth\n• Status Cards\n• Uptime\n• CPU/Memory", "lineHeight": 1.25 }, { "id": "mitreheatmap", "type": "rectangle", "x": 50, "y": 630, "width": 180, "height": 90, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "#d0bfff", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "mitreheatmap-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "mitreheatmap-text", "type": "text", "x": 60, "y": 640, "width": 160, "height": 65, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "MitreHeatmap\n• ATT&CK Matrix\n• Coverage Grid\n• Color-coded", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "mitreheatmap", "originalText": "MitreHeatmap\n• ATT&CK Matrix\n• Coverage Grid\n• Color-coded", "lineHeight": 1.25 }, { "id": "topthreats", "type": "rectangle", "x": 260, "y": 630, "width": 180, "height": 90, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "#ffc9c9", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "topthreats-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "topthreats-text", "type": "text", "x": 270, "y": 640, "width": 160, "height": 65, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "TopThreats\n• IP Table\n• Attack Count\n• GeoIP Flags", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "topthreats", "originalText": "TopThreats\n• IP Table\n• Attack Count\n• GeoIP Flags", "lineHeight": 1.25 }, { "id": "incidenttracker", "type": "rectangle", "x": 470, "y": 630, "width": 180, "height": 90, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "#ffe8cc", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "incidenttracker-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "incidenttracker-text", "type": "text", "x": 480, "y": 640, "width": 160, "height": 65, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "IncidentTracker\n• IR Pipeline\n• Status Flow\n• Priority Levels", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "incidenttracker", "originalText": "IncidentTracker\n• IR Pipeline\n• Status Flow\n• Priority Levels", "lineHeight": 1.25 }, { "id": "vulnsummary", "type": "rectangle", "x": 680, "y": 630, "width": 180, "height": 90, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "#ffc9c9", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "vulnsummary-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "vulnsummary-text", "type": "text", "x": 690, "y": 640, "width": 160, "height": 65, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "VulnSummary\n• Donut Chart\n• CVSS Severity\n• Counts", "fontSize": 13, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "vulnsummary", "originalText": "VulnSummary\n• Donut Chart\n• CVSS Severity\n• Counts", "lineHeight": 1.25 }, { "id": "mockdata", "type": "rectangle", "x": 300, "y": 780, "width": 300, "height": 100, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": [ {"type": "text", "id": "mockdata-text"} ], "updated": 1, "link": null, "locked": false }, { "id": "mockdata-text", "type": "text", "x": 310, "y": 790, "width": 280, "height": 75, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "mockData.js (Data Layer)\n• Alert generators\n• Traffic simulators\n• MITRE ATT&CK data\n• Random realistic values", "fontSize": 14, "fontFamily": 1, "textAlign": "center", "verticalAlign": "middle", "containerId": "mockdata", "originalText": "mockData.js (Data Layer)\n• Alert generators\n• Traffic simulators\n• MITRE ATT&CK data\n• Random realistic values", "lineHeight": 1.25 }, { "id": "arrow-browser-vite", "type": "arrow", "x": 450, "y": 180, "width": 0, "height": 40, "angle": 0, "strokeColor": "#495057", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [0, 40]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false }, { "id": "arrow-vite-app", "type": "arrow", "x": 450, "y": 300, "width": 0, "height": 40, "angle": 0, "strokeColor": "#495057", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [0, 40]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false }, { "id": "arrow-app-header", "type": "arrow", "x": 300, "y": 390, "width": 160, "height": 110, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [-160, 0], [-160, 110]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true }, { "id": "arrow-app-threatfeed", "type": "arrow", "x": 350, "y": 440, "width": 0, "height": 60, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [0, 60]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false }, { "id": "arrow-app-network", "type": "arrow", "x": 450, "y": 440, "width": 110, "height": 60, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [110, 0], [110, 60]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true }, { "id": "arrow-app-system", "type": "arrow", "x": 600, "y": 390, "width": 170, "height": 110, "angle": 0, "strokeColor": "#1971c2", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [170, 0], [170, 110]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true }, { "id": "arrow-app-mitre", "type": "arrow", "x": 300, "y": 390, "width": 160, "height": 240, "angle": 0, "strokeColor": "#7048e8", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [-160, 0], [-160, 240]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true }, { "id": "arrow-app-topthreats", "type": "arrow", "x": 350, "y": 440, "width": 0, "height": 190, "angle": 0, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [0, 190]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false }, { "id": "arrow-app-incident", "type": "arrow", "x": 450, "y": 440, "width": 110, "height": 190, "angle": 0, "strokeColor": "#f08c00", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [110, 0], [110, 190]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true }, { "id": "arrow-app-vuln", "type": "arrow", "x": 600, "y": 390, "width": 170, "height": 240, "angle": 0, "strokeColor": "#e03131", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [170, 0], [170, 240]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": true }, { "id": "arrow-mockdata-app", "type": "arrow", "x": 450, "y": 780, "width": 0, "height": 340, "angle": 0, "strokeColor": "#2f9e44", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "dashed", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "points": [[0, 0], [0, -340]], "lastCommittedPoint": null, "startBinding": null, "endBinding": null, "startArrowhead": null, "endArrowhead": "arrow", "elbowed": false }, { "id": "tech-stack-title", "type": "text", "x": 950, "y": 100, "width": 250, "height": 30, "angle": 0, "strokeColor": "#495057", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Technology Stack", "fontSize": 18, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Technology Stack", "lineHeight": 1.25 }, { "id": "tech-stack-text", "type": "text", "x": 950, "y": 145, "width": 300, "height": 400, "angle": 0, "strokeColor": "#495057", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Frontend:\n• React 19 (latest)\n• Vite 7 (build tool)\n• Tailwind CSS v4 (alpha)\n• Recharts (data viz)\n• date-fns (time formatting)\n\nStyling:\n• Tech-Noir aesthetic\n• Sharp corners (0px radius)\n• Crimson accent (#D72638)\n• Dark theme (#1B1B1E)\n• Custom Tailwind tokens\n\nData Management:\n• Client-side state (useState)\n• Auto-refresh intervals:\n - Alerts: 3-6s\n - Traffic/Systems: 15s\n - MITRE/Incidents: 30s\n• Mock data generators\n\nLayout:\n• 12-column CSS Grid\n• 3 rows, responsive\n• Flexible panel sizing\n• No border-radius (brand)\n\nFuture Integration:\n• Security Onion export\n• Live SIEM data feed\n• Real-time WebSocket", "fontSize": 13, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "containerId": null, "originalText": "Frontend:\n• React 19 (latest)\n• Vite 7 (build tool)\n• Tailwind CSS v4 (alpha)\n• Recharts (data viz)\n• date-fns (time formatting)\n\nStyling:\n• Tech-Noir aesthetic\n• Sharp corners (0px radius)\n• Crimson accent (#D72638)\n• Dark theme (#1B1B1E)\n• Custom Tailwind tokens\n\nData Management:\n• Client-side state (useState)\n• Auto-refresh intervals:\n - Alerts: 3-6s\n - Traffic/Systems: 15s\n - MITRE/Incidents: 30s\n• Mock data generators\n\nLayout:\n• 12-column CSS Grid\n• 3 rows, responsive\n• Flexible panel sizing\n• No border-radius (brand)\n\nFuture Integration:\n• Security Onion export\n• Live SIEM data feed\n• Real-time WebSocket", "lineHeight": 1.25 }, { "id": "footer", "type": "text", "x": 100, "y": 920, "width": 750, "height": 25, "angle": 0, "strokeColor": "#868e96", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "frameId": null, "roundness": null, "seed": 1, "version": 1, "versionNonce": 1, "isDeleted": false, "boundElements": null, "updated": 1, "link": null, "locked": false, "text": "Apophis SOC Dashboard - localhost:5173 - All data currently simulated/mock", "fontSize": 14, "fontFamily": 1, "textAlign": "center", "verticalAlign": "top", "containerId": null, "originalText": "Apophis SOC Dashboard - localhost:5173 - All data currently simulated/mock", "lineHeight": 1.25 } ], "appState": { "gridSize": 20, "viewBackgroundColor": "#1B1B1E" }, "files": {} }