Files
seclab/dashboard-architecture.excalidraw

1295 lines
32 KiB
Plaintext
Raw Normal View History

2026-05-28 18:27:41 -06:00
{
"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": {}
}