-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdemo_dashboard.html
More file actions
419 lines (359 loc) · 58.6 KB
/
demo_dashboard.html
File metadata and controls
419 lines (359 loc) · 58.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
<!DOCTYPE html>
<html>
<head>
<title>Cortex Living Network</title>
<link href="https://fonts.googleapis.com/css2?family=Rajdhani:wght@300;500;700&display=swap" rel="stylesheet">
<script src="https://unpkg.com/three@0.130.1/build/three.js"></script>
<script src="https://unpkg.com/3d-force-graph@1.70.10/dist/3d-force-graph.min.js"></script>
<script src="https://unpkg.com/force-graph@1.43.0/dist/force-graph.min.js"></script>
<script src="https://unpkg.com/three-spritetext"></script>
<style>
body {
font-family: 'Rajdhani', sans-serif;
margin: 0; padding: 0;
background-color: #000000;
color: #e0f7ff;
overflow: hidden;
}
#3d-graph { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; }
#aurora-overlay {
position: absolute;
inset: 0;
pointer-events: none;
background: radial-gradient(circle at 20% 20%, rgba(0, 255, 213, 0.2), transparent 60%),
radial-gradient(circle at 80% 40%, rgba(255, 0, 153, 0.15), transparent 55%),
linear-gradient(120deg, rgba(0, 153, 255, 0.15), rgba(255, 0, 102, 0.05));
mix-blend-mode: screen;
animation: auroraSweep 12s ease-in-out infinite;
z-index: 2;
}
@keyframes auroraSweep {
0% { transform: translateX(-10%) translateY(-5%) scale(1); opacity: 0.25; }
50% { transform: translateX(5%) translateY(3%) scale(1.1); opacity: 0.4; }
100% { transform: translateX(-10%) translateY(-5%) scale(1); opacity: 0.25; }
}
/* HUD styling - holographic glass effect */
.hud-panel {
position: absolute;
background: rgba(5, 10, 20, 0.65);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 255, 242, 0.15);
box-shadow: 0 0 30px rgba(0, 255, 242, 0.05), inset 0 0 20px rgba(0, 255, 242, 0.05);
padding: 25px;
border-radius: 2px; /* Angoli più vivi per look tech */
z-index: 10;
transition: all 0.4s cubic-bezier(0.19, 1, 0.22, 1);
}
/* Decorative tech-style corner accents */
.hud-panel::before {
content: ''; position: absolute; top: -1px; left: -1px;
width: 15px; height: 15px;
border-top: 2px solid #00d2ff; border-left: 2px solid #00d2ff;
}
.hud-panel::after {
content: ''; position: absolute; bottom: -1px; right: -1px;
width: 15px; height: 15px;
border-bottom: 2px solid #00d2ff; border-right: 2px solid #00d2ff;
}
#info { top: 30px; left: 30px; width: 300px; pointer-events: none; } /* pointer-events: none lets clicks pass through */
#details {
top: 0; right: -500px; height: 100vh; width: 400px;
background: rgba(5, 10, 20, 0.85);
border-left: 2px solid rgba(0, 210, 255, 0.3);
border-top: none; border-bottom: none; border-radius: 0;
box-sizing: border-box;
}
#details.show { right: 0; }
/* Testi */
h1 {
margin: 0 0 10px 0; font-size: 2em; font-weight: 700; color: #fff;
text-transform: uppercase; letter-spacing: 4px;
text-shadow: 0 0 20px rgba(0, 210, 255, 0.8);
}
h2 { margin: 0 0 15px 0; color: #00d2ff; font-size: 1.8em; letter-spacing: 2px; }
p { color: #aecbe0; font-size: 1.1em; font-weight: 300; }
.metric { font-family: monospace; color: #00d2ff; font-size: 0.9em; }
.close-btn {
position: absolute; top: 20px; right: 20px;
font-size: 2em; color: #ff4444; cursor: pointer;
transition: 0.3s;
}
.close-btn:hover { text-shadow: 0 0 15px #ff0000; transform: rotate(90deg); }
/* Legenda Animata */
.legend-row { display: flex; align-items: center; margin-bottom: 12px; }
.dot { width: 10px; height: 10px; border-radius: 50%; margin-right: 15px; box-shadow: 0 0 10px currentColor; }
</style>
</head>
<body>
<div id="3d-graph"></div>
<div id="aurora-overlay"></div>
<div id="info" class="hud-panel">
<h1>CORTEX</h1>
<p style="border-bottom: 1px solid rgba(255,255,255,0.1); padding-bottom: 10px;">Neural Knowledge System</p>
<div style="margin-top: 20px;">
<div class="legend-row"><div class="dot" style="background:#ff3366; color:#ff3366;"></div> <span class="metric">MEMORY_NODE</span></div>
<div class="legend-row"><div class="dot" style="background:#00ff88; color:#00ff88;"></div> <span class="metric">TOPIC_CLUSTER</span></div>
<div class="legend-row"><div class="dot" style="background:#00ccff; color:#00ccff;"></div> <span class="metric">PROJECT_CORE</span></div>
</div>
<div id="stats-panel" style="margin-top: 20px;">
<div class="metric">// SIGNAL_NODES: <span id="stat-nodes">0</span></div>
<div class="metric">// RELATION_LINKS: <span id="stat-links">0</span></div>
</div>
<div style="margin-top: 20px; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 15px;">
<div class="metric" style="margin-bottom: 10px;">// VIEW_MODE</div>
<div style="display: flex; gap: 10px; pointer-events: auto;">
<button id="btn-3d" onclick="switchTo3D()" style="flex: 1; padding: 8px; background: rgba(0,210,255,0.2); border: 1px solid #00d2ff; color: #00d2ff; cursor: pointer; font-family: 'Rajdhani', sans-serif; font-weight: 500; transition: 0.3s;">3D</button>
<button id="btn-2d" onclick="switchTo2D()" style="flex: 1; padding: 8px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.2); color: #888; cursor: pointer; font-family: 'Rajdhani', sans-serif; font-weight: 500; transition: 0.3s;">2D</button>
</div>
</div>
<div style="margin-top: 30px; font-size: 0.8em; opacity: 0.7;">
System Status: ONLINE<br>
Data Flow: ACTIVE
</div>
</div>
<div id="details" class="hud-panel">
<span class="close-btn" onclick="closeDetails()">×</span>
<div id="details-content" style="margin-top: 40px; padding: 10px;"></div>
</div>
<script>
// Configuration
const rawCytoscapeData = [{"data": {"id": "b7fae546-d58c-4e50-b9fd-2db4638a90d2", "type": "Memory", "text": "We are starting Project Orion to build a new AI-powered customer support agent.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:46.167277", "category": "planning"}}, {"data": {"id": "f30925fa-d0c3-443e-8a83-0b9d057475ca", "type": "Memory", "text": "Project Orion aims to reduce support ticket response time by 60%.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:46.304606", "category": "objective"}}, {"data": {"id": "6c861004-5560-44c9-82c9-a6b7edba7b3e", "type": "Memory", "text": "The team consists of 3 backend engineers, 2 frontend engineers, and 1 DevOps specialist.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:46.413640", "category": "team"}}, {"data": {"id": "c265707c-17db-41d7-ad97-5e179d01056a", "type": "Memory", "text": "Timeline: MVP in 3 months, production launch in 6 months.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:46.523017", "category": "timeline"}}, {"data": {"id": "2bbd6953-5958-4d06-8f30-df107add2bc8", "type": "Memory", "text": "Budget approved: $500K for initial development phase.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:46.625394", "category": "budget"}}, {"data": {"id": "3ac59bff-0624-4b59-85d0-85cf88a81849", "type": "Memory", "text": "Primary stakeholder is the Customer Success department, secondary is Sales.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:46.719403", "category": "stakeholders"}}, {"data": {"id": "5591bf8b-c3e0-4240-840c-73dc3625ad32", "type": "Memory", "text": "The backend will be written in Python 3.11 using FastAPI framework for async performance.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:46.819114", "category": "tech-stack"}}, {"data": {"id": "344b70fd-c6d2-44ee-9062-8fae8ff59171", "type": "Memory", "text": "For the frontend, we decided to use React 18 with TypeScript for type safety.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:46.946859", "category": "tech-stack"}}, {"data": {"id": "5df713a9-f4ae-4ff7-b20b-b1b730801798", "type": "Memory", "text": "We chose PostgreSQL 15 for relational data storage with full-text search capabilities.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.057701", "category": "tech-stack"}}, {"data": {"id": "3cd63e95-c819-4358-b6d5-68c51872beea", "type": "Memory", "text": "Redis will be used for caching and session management to improve response times.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.160718", "category": "tech-stack"}}, {"data": {"id": "3941ebfa-9963-4d31-889c-9f45998e6495", "type": "Memory", "text": "We need to use Docker for containerization and docker-compose for local development.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.263176", "category": "devops"}}, {"data": {"id": "43ee1278-fadc-4369-91b0-b4b0e8846999", "type": "Memory", "text": "The API will follow REST principles with OpenAPI 3.0 documentation.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.369694", "category": "architecture"}}, {"data": {"id": "2d3c5d27-203a-4523-a9eb-9dc6774a5aad", "type": "Memory", "text": "Authentication will use JWT tokens with RS256 signing algorithm.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.479319", "category": "security"}}, {"data": {"id": "07676549-cbd6-4956-b377-15d25d8cba81", "type": "Memory", "text": "Frontend will use Material-UI component library for consistent design.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.591614", "category": "tech-stack"}}, {"data": {"id": "e98cbaaa-b742-41a5-ab87-19304c75e6b0", "type": "Memory", "text": "Implementing WebSocket connections for real-time chat functionality.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:47.692253", "category": "tech-stack"}}, {"data": {"id": "7f207be6-47c8-4936-9132-99f7ac5e6bdf", "type": "Memory", "text": "Project Orion will deploy to AWS using ECS Fargate for container orchestration.", "source": "devops_doc", "timestamp": "2025-11-24T12:48:47.795137", "category": "devops"}}, {"data": {"id": "bec00b83-632e-4f0a-b726-c8401b4121bc", "type": "Memory", "text": "Infrastructure as Code will be managed with Terraform for reproducibility.", "source": "devops_doc", "timestamp": "2025-11-24T12:48:47.914771", "category": "devops"}}, {"data": {"id": "c5caf5a4-8d52-42e1-8ded-859476838c92", "type": "Memory", "text": "CI/CD pipeline will use GitHub Actions with automated testing and deployment.", "source": "devops_doc", "timestamp": "2025-11-24T12:48:48.021136", "category": "devops"}}, {"data": {"id": "85dabc75-7953-4dc1-8819-2c1bc9474748", "type": "Memory", "text": "Production environment will use multi-AZ deployment for high availability.", "source": "devops_doc", "timestamp": "2025-11-24T12:48:48.135867", "category": "infrastructure"}}, {"data": {"id": "467421f6-7805-4d54-8979-59279c34d6f8", "type": "Memory", "text": "Monitoring will be handled by CloudWatch with custom dashboards and alarms.", "source": "devops_doc", "timestamp": "2025-11-24T12:48:48.231536", "category": "monitoring"}}, {"data": {"id": "fa03db0a-da20-4551-ba36-d6d67006d14d", "type": "Memory", "text": "Implementing blue-green deployment strategy to minimize downtime.", "source": "devops_doc", "timestamp": "2025-11-24T12:48:48.352166", "category": "devops"}}, {"data": {"id": "38388c43-289f-440e-800e-2bc26cfdb74f", "type": "Memory", "text": "Critical bug found: authentication API tokens expire after 5 minutes instead of 1 hour. Users getting logged out.", "source": "bug_tracker", "timestamp": "2025-11-24T12:48:48.438186", "category": "bug-report"}}, {"data": {"id": "52c1dcf2-a16f-436f-836d-21be73f2520c", "type": "Memory", "text": "Performance issue: database queries taking 3+ seconds on customer search endpoint. Need indexing.", "source": "bug_tracker", "timestamp": "2025-11-24T12:48:48.559071", "category": "performance"}}, {"data": {"id": "dbb4b9b9-eb91-4503-91cc-1932b5f9479c", "type": "Memory", "text": "Security vulnerability: CORS headers allowing all origins in production. Must restrict to app domain.", "source": "bug_tracker", "timestamp": "2025-11-24T12:48:48.664160", "category": "security-issue"}}, {"data": {"id": "191b112f-c129-4645-9fd8-8b9fb23c0532", "type": "Memory", "text": "Memory leak detected in WebSocket connection handler. Need to investigate.", "source": "bug_tracker", "timestamp": "2025-11-24T12:48:48.764651", "category": "bug-report"}}, {"data": {"id": "68bedeec-d92b-4b9d-8347-c12e6e308a4e", "type": "Memory", "text": "Sprint Planning: Decided to prioritize authentication bug fix and database performance optimization.", "source": "meeting_notes", "timestamp": "2025-11-24T12:48:48.869646", "category": "meeting"}}, {"data": {"id": "532b6a91-c368-408d-978f-6f7515afd2f4", "type": "Memory", "text": "Architecture Review: Approved migration from monolith to microservices for better scalability.", "source": "meeting_notes", "timestamp": "2025-11-24T12:48:48.975011", "category": "meeting"}}, {"data": {"id": "11eca57e-d083-445a-90f4-9a2a65e94140", "type": "Memory", "text": "Retrospective: Team velocity increased by 20% after adopting pair programming for complex features.", "source": "meeting_notes", "timestamp": "2025-11-24T12:48:49.077318", "category": "meeting"}}, {"data": {"id": "36bff216-b73c-4f5f-839a-979d9d9394dd", "type": "Memory", "text": "Daily Standup: Frontend team blocked on API spec, need backend team sync.", "source": "meeting_notes", "timestamp": "2025-11-24T12:48:49.178900", "category": "meeting"}}, {"data": {"id": "d1956804-7e6f-490e-abae-268e731f71c8", "type": "Memory", "text": "Client demo went well, received positive feedback on the UI. Requested dark mode feature.", "source": "meeting_notes", "timestamp": "2025-11-24T12:48:49.286732", "category": "meeting"}}, {"data": {"id": "83abe9fa-4da3-4da2-9d70-7b24f351ac54", "type": "Memory", "text": "Project Atlas is our new enterprise data analytics platform for Fortune 500 clients.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:49.393594", "category": "planning"}}, {"data": {"id": "995a90ed-cf3c-433d-ae80-e2a6f49763dc", "type": "Memory", "text": "Goal: Process 10TB+ of data daily with sub-second query response times.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:49.509077", "category": "objective"}}, {"data": {"id": "82e73117-3841-4cd8-8852-885b2d37869a", "type": "Memory", "text": "Team structure: 5 data engineers, 3 ML engineers, 2 platform engineers, 1 product manager.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:49.606962", "category": "team"}}, {"data": {"id": "24ac519c-b2ce-435d-ac3c-31f3bdfd16da", "type": "Memory", "text": "18-month roadmap: Q1 MVP, Q2-Q3 beta testing, Q4 general availability.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:49.715909", "category": "timeline"}}, {"data": {"id": "d04dc1fa-fbf6-489c-b96b-9619f093cd8d", "type": "Memory", "text": "Initial contracts signed with 3 pilot customers worth $2.5M ARR.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:49.828962", "category": "business"}}, {"data": {"id": "0e9a70a7-77bc-424b-bf50-4bad23f4f292", "type": "Memory", "text": "Using Apache Spark 3.4 for distributed data processing and ETL pipelines.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:49.928907", "category": "tech-stack"}}, {"data": {"id": "ef22baef-3106-4ec9-8cf0-01aff5106fa1", "type": "Memory", "text": "Data lake built on AWS S3 with Parquet format for columnar storage.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.039376", "category": "tech-stack"}}, {"data": {"id": "be32619e-1343-4b8e-aa82-7b5a3ed0e248", "type": "Memory", "text": "Query engine: Trino (formerly Presto) for federated SQL queries across data sources.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.141905", "category": "tech-stack"}}, {"data": {"id": "c78cad11-44ae-4624-a3e1-c60a0c0f32eb", "type": "Memory", "text": "Metadata catalog managed by Apache Hive Metastore with AWS Glue integration.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.264817", "category": "tech-stack"}}, {"data": {"id": "fecd757c-afc4-414e-ad22-3f5f6e7de7e3", "type": "Memory", "text": "Real-time streaming pipeline using Apache Kafka and Flink.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.381286", "category": "tech-stack"}}, {"data": {"id": "153636cc-22a9-4f42-9057-9920ba08317b", "type": "Memory", "text": "ML models deployed using MLflow and served via SageMaker endpoints.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.514134", "category": "tech-stack"}}, {"data": {"id": "f07ede09-7c42-4f91-8d11-bd5e7cad6ec9", "type": "Memory", "text": "Frontend dashboard built with D3.js and Plotly for interactive visualizations.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.625519", "category": "tech-stack"}}, {"data": {"id": "df40d29b-e08d-4191-a903-817bfd30cb48", "type": "Memory", "text": "Implementing Delta Lake for ACID transactions on data lake.", "source": "architecture_doc", "timestamp": "2025-11-24T12:48:50.728371", "category": "architecture"}}, {"data": {"id": "cb1b502e-da82-4803-9963-9cf586a2aa68", "type": "Memory", "text": "Running EMR clusters with auto-scaling based on workload. Cost optimization is critical.", "source": "infra_doc", "timestamp": "2025-11-24T12:48:50.837436", "category": "infrastructure"}}, {"data": {"id": "91026dc5-5a5e-4cb7-ac6e-449deb926887", "type": "Memory", "text": "Data encrypted at rest with KMS, in transit with TLS 1.3.", "source": "infra_doc", "timestamp": "2025-11-24T12:48:50.939680", "category": "security"}}, {"data": {"id": "a3ce048a-a2bf-482b-bc2e-cb699fb7d3ac", "type": "Memory", "text": "Multi-region replication for disaster recovery, RTO target: 4 hours.", "source": "infra_doc", "timestamp": "2025-11-24T12:48:51.051225", "category": "infrastructure"}}, {"data": {"id": "c0d07dca-a83a-46fd-8bda-6df0baec3355", "type": "Memory", "text": "Implementing data lineage tracking with Apache Atlas for compliance.", "source": "infra_doc", "timestamp": "2025-11-24T12:48:51.159311", "category": "governance"}}, {"data": {"id": "709bea64-602c-4eb3-b6c2-30e8a0f36a29", "type": "Memory", "text": "Spark jobs failing intermittently with OutOfMemory errors on large datasets.", "source": "issue_tracker", "timestamp": "2025-11-24T12:48:51.265541", "category": "bug-report"}}, {"data": {"id": "78b0dd67-38b5-46f4-97f5-53b151939b05", "type": "Memory", "text": "Query performance degraded after schema evolution. Need to rebuild indexes.", "source": "issue_tracker", "timestamp": "2025-11-24T12:48:51.365646", "category": "performance"}}, {"data": {"id": "07ec8f76-62e4-466a-b8c7-c990c0f40bde", "type": "Memory", "text": "Data quality issue: 2% of records have null values in critical timestamp field.", "source": "issue_tracker", "timestamp": "2025-11-24T12:48:51.466489", "category": "data-quality"}}, {"data": {"id": "3d335b9e-4148-47cb-8921-eefc70a873da", "type": "Memory", "text": "Data team discussion: Should we move from batch to streaming for real-time insights? Consensus: hybrid approach.", "source": "conversation_log", "timestamp": "2025-11-24T12:48:51.570169", "category": "discussion"}}, {"data": {"id": "a56fd991-02f2-489f-ac8d-b6f792436ffe", "type": "Memory", "text": "Customer feedback session: They love the visualizations but need export to Excel feature.", "source": "conversation_log", "timestamp": "2025-11-24T12:48:51.670983", "category": "feedback"}}, {"data": {"id": "514c24df-a818-49f9-a72b-2453e6b88908", "type": "Memory", "text": "Architecture debate: Snowflake vs. building custom lakehouse. Decision: custom for cost control.", "source": "conversation_log", "timestamp": "2025-11-24T12:48:51.778654", "category": "decision"}}, {"data": {"id": "bee0d41b-03ac-4e49-89e5-7bc921bab4e2", "type": "Memory", "text": "Project Phoenix: Complete rewrite of our mobile app from scratch. Legacy codebase unsalvageable.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:51.879640", "category": "planning"}}, {"data": {"id": "e0e109b9-4819-4320-a7c3-2d83ef065b3e", "type": "Memory", "text": "Target: 50% faster app performance, 4.5+ star rating, support iOS 15+ and Android 12+.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:51.989466", "category": "objective"}}, {"data": {"id": "4e9351ad-1b59-4d9c-a5c8-ad11df11cd9a", "type": "Memory", "text": "Team: 4 mobile engineers (2 iOS, 2 Android), 1 designer, 1 QA, 1 product owner.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:52.107954", "category": "team"}}, {"data": {"id": "1d86b6cf-09ca-4438-b319-41e139d1b406", "type": "Memory", "text": "9-month timeline: 3 months design, 5 months dev, 1 month beta testing.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:52.212015", "category": "timeline"}}, {"data": {"id": "14ba44bf-920d-4d65-8be2-fbd375e7cb40", "type": "Memory", "text": "Key requirement: Offline-first architecture for users in low-connectivity areas.", "source": "planning_doc", "timestamp": "2025-11-24T12:48:52.313371", "category": "requirement"}}, {"data": {"id": "dcc72dc3-6dc9-4a5d-b922-457c255c7ea6", "type": "Memory", "text": "Going native: Swift for iOS, Kotlin for Android. No React Native due to performance concerns.", "source": "tech_doc", "timestamp": "2025-11-24T12:48:52.414290", "category": "tech-stack"}}, {"data": {"id": "b16edb6e-d3d2-42e9-b632-b38919b75f37", "type": "Memory", "text": "Shared business logic using Kotlin Multiplatform Mobile (KMM).", "source": "tech_doc", "timestamp": "2025-11-24T12:48:52.531162", "category": "tech-stack"}}, {"data": {"id": "5a537445-4717-463a-ae86-c565ef1eb207", "type": "Memory", "text": "Local database: SQLite with Room (Android) and Core Data (iOS).", "source": "tech_doc", "timestamp": "2025-11-24T12:48:52.670835", "category": "tech-stack"}}, {"data": {"id": "2dea17b0-3e53-4204-b92c-7baa4846c949", "type": "Memory", "text": "API client uses GraphQL with Apollo for efficient data fetching.", "source": "tech_doc", "timestamp": "2025-11-24T12:48:52.778191", "category": "tech-stack"}}, {"data": {"id": "311d2996-2ef1-47d1-a47b-ac94795a6768", "type": "Memory", "text": "Push notifications via Firebase Cloud Messaging for both platforms.", "source": "tech_doc", "timestamp": "2025-11-24T12:48:52.892148", "category": "tech-stack"}}, {"data": {"id": "e7104a8b-4eb2-4d9c-b553-cf105bccf088", "type": "Memory", "text": "UI design system based on Material Design 3 and iOS Human Interface Guidelines.", "source": "tech_doc", "timestamp": "2025-11-24T12:48:53.001706", "category": "design"}}, {"data": {"id": "202ef8f9-f270-407a-8e2f-737868dd1482", "type": "Memory", "text": "Implementing MVVM architecture pattern for better testability.", "source": "tech_doc", "timestamp": "2025-11-24T12:48:53.120532", "category": "architecture"}}, {"data": {"id": "b34a7d5d-ed50-4f92-8aa0-b2db16963730", "type": "Memory", "text": "iOS build failing on CI due to provisioning profile issues. Need DevOps help.", "source": "issue_log", "timestamp": "2025-11-24T12:48:53.219106", "category": "bug-report"}}, {"data": {"id": "4803a8a6-cde1-4f70-aa95-e5d5ac7d449f", "type": "Memory", "text": "App crashes on Android 13+ when requesting location permission. Investigate new permission model.", "source": "issue_log", "timestamp": "2025-11-24T12:48:53.329473", "category": "bug-report"}}, {"data": {"id": "99cc7d39-9d9c-430e-b0d4-5ed17014932c", "type": "Memory", "text": "Battery drain reported in beta testing. Profiling shows network requests running in background.", "source": "issue_log", "timestamp": "2025-11-24T12:48:53.438350", "category": "performance"}}, {"data": {"id": "5be99ed7-e92c-4782-b322-cb04cad859b6", "type": "Memory", "text": "Design team concerned about accessibility compliance. Need WCAG audit.", "source": "issue_log", "timestamp": "2025-11-24T12:48:53.542266", "category": "concern"}}, {"data": {"id": "9eaa61a0-40d4-4e09-89a3-3f4d3b03d270", "type": "Memory", "text": "Code review discussion: Should we use Combine or async/await for iOS networking? Team prefers async/await.", "source": "team_chat", "timestamp": "2025-11-24T12:48:53.641289", "category": "discussion"}}, {"data": {"id": "90060761-b06e-4cf8-8778-b7bdc5e8236f", "type": "Memory", "text": "Product sync: Marketing wants social sharing feature. Adding to Q2 backlog.", "source": "team_chat", "timestamp": "2025-11-24T12:48:53.743211", "category": "meeting"}}, {"data": {"id": "2f99ccc2-ae67-4573-b0d0-5d94d003b401", "type": "Memory", "text": "Beta tester feedback: Love the new UI but miss the old widget. Plan to redesign widget.", "source": "team_chat", "timestamp": "2025-11-24T12:48:53.852047", "category": "feedback"}}, {"data": {"id": "ed515f9b-3a10-44c3-8435-d075f3276de0", "type": "Memory", "text": "Team retrospective: Pair programming on complex features working well. Continue practice.", "source": "team_chat", "timestamp": "2025-11-24T12:48:53.974364", "category": "retrospective"}}, {"data": {"id": "0fb14bf1-bb3e-4e27-bdeb-d064503cc906", "type": "Memory", "text": "Technical debt discussion: Old networking layer needs refactoring. Schedule 2-week cleanup sprint.", "source": "team_chat", "timestamp": "2025-11-24T12:48:54.074681", "category": "planning"}}, {"data": {"id": "a1e6be95-55bf-4746-9b3d-45f094e1456a", "type": "Memory", "text": "Company-wide decision: Standardizing on GitHub Actions for all CI/CD pipelines.", "source": "company_memo", "timestamp": "2025-11-24T12:48:54.175963", "category": "policy"}}, {"data": {"id": "cd64fe04-ca72-450e-a84d-5636f63e884e", "type": "Memory", "text": "Security policy update: All projects must implement 2FA and rotate secrets quarterly.", "source": "company_memo", "timestamp": "2025-11-24T12:48:54.299629", "category": "security"}}, {"data": {"id": "b2d5788b-52b4-4e1c-982a-f9978a6bc8ee", "type": "Memory", "text": "Engineering all-hands: Discussed hiring 10 more engineers across all teams in Q2.", "source": "company_memo", "timestamp": "2025-11-24T12:48:54.404016", "category": "meeting"}}, {"data": {"id": "b98a66ca-285d-49b2-a702-6525e11a2726", "type": "Memory", "text": "New vendor contract signed with DataDog for observability across all products.", "source": "company_memo", "timestamp": "2025-11-24T12:48:54.506817", "category": "vendor"}}, {"data": {"id": "fe94ff90-e82d-433a-a5d9-0ce0ca797cab", "type": "Memory", "text": "CTO directive: Every project needs comprehensive API documentation in Confluence.", "source": "company_memo", "timestamp": "2025-11-24T12:48:54.606709", "category": "directive"}}, {"data": {"id": "project orion", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "devops", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "mvp", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "customer success", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "python", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "api", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "react", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "typescript", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "sql", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "redis", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "docker", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "rs256", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "jwt", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "implementing websocket", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "ecs fargate", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "terraform", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "github actions", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "ci", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "cloudwatch", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "bug", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "websocket", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "ui", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "fortune 500", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "ml", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "q4", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "using apache spark", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "presto", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "apache hive metastore", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "apache kafka", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "sagemaker", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "acid", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "kms", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "rto", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "apache atlas", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "excel", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "project phoenix", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "android", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "target", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "kmm", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "kotlin multiplatform mobile", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "core data", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "apollo", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "firebase cloud messaging", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "material design", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "q2", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "cto", "type": "Topic", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "Orion", "type": "Project", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "Atlas", "type": "Project", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "Phoenix", "type": "Project", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"id": "Company", "type": "Project", "text": NaN, "source": NaN, "timestamp": NaN, "category": NaN}}, {"data": {"source": "b7fae546-d58c-4e50-b9fd-2db4638a90d2", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "f30925fa-d0c3-443e-8a83-0b9d057475ca", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "6c861004-5560-44c9-82c9-a6b7edba7b3e", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "c265707c-17db-41d7-ad97-5e179d01056a", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "2bbd6953-5958-4d06-8f30-df107add2bc8", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "3ac59bff-0624-4b59-85d0-85cf88a81849", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "5591bf8b-c3e0-4240-840c-73dc3625ad32", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "344b70fd-c6d2-44ee-9062-8fae8ff59171", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "5df713a9-f4ae-4ff7-b20b-b1b730801798", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "3cd63e95-c819-4358-b6d5-68c51872beea", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "3941ebfa-9963-4d31-889c-9f45998e6495", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "43ee1278-fadc-4369-91b0-b4b0e8846999", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "2d3c5d27-203a-4523-a9eb-9dc6774a5aad", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "07676549-cbd6-4956-b377-15d25d8cba81", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "e98cbaaa-b742-41a5-ab87-19304c75e6b0", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "7f207be6-47c8-4936-9132-99f7ac5e6bdf", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "bec00b83-632e-4f0a-b726-c8401b4121bc", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "c5caf5a4-8d52-42e1-8ded-859476838c92", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "85dabc75-7953-4dc1-8819-2c1bc9474748", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "467421f6-7805-4d54-8979-59279c34d6f8", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "fa03db0a-da20-4551-ba36-d6d67006d14d", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "38388c43-289f-440e-800e-2bc26cfdb74f", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "52c1dcf2-a16f-436f-836d-21be73f2520c", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "dbb4b9b9-eb91-4503-91cc-1932b5f9479c", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "191b112f-c129-4645-9fd8-8b9fb23c0532", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "68bedeec-d92b-4b9d-8347-c12e6e308a4e", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "532b6a91-c368-408d-978f-6f7515afd2f4", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "11eca57e-d083-445a-90f4-9a2a65e94140", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "36bff216-b73c-4f5f-839a-979d9d9394dd", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "d1956804-7e6f-490e-abae-268e731f71c8", "target": "Orion", "label": "BELONGS_TO"}}, {"data": {"source": "83abe9fa-4da3-4da2-9d70-7b24f351ac54", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "995a90ed-cf3c-433d-ae80-e2a6f49763dc", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "82e73117-3841-4cd8-8852-885b2d37869a", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "24ac519c-b2ce-435d-ac3c-31f3bdfd16da", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "d04dc1fa-fbf6-489c-b96b-9619f093cd8d", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "0e9a70a7-77bc-424b-bf50-4bad23f4f292", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "ef22baef-3106-4ec9-8cf0-01aff5106fa1", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "be32619e-1343-4b8e-aa82-7b5a3ed0e248", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "c78cad11-44ae-4624-a3e1-c60a0c0f32eb", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "fecd757c-afc4-414e-ad22-3f5f6e7de7e3", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "153636cc-22a9-4f42-9057-9920ba08317b", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "f07ede09-7c42-4f91-8d11-bd5e7cad6ec9", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "df40d29b-e08d-4191-a903-817bfd30cb48", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "cb1b502e-da82-4803-9963-9cf586a2aa68", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "91026dc5-5a5e-4cb7-ac6e-449deb926887", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "a3ce048a-a2bf-482b-bc2e-cb699fb7d3ac", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "c0d07dca-a83a-46fd-8bda-6df0baec3355", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "709bea64-602c-4eb3-b6c2-30e8a0f36a29", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "78b0dd67-38b5-46f4-97f5-53b151939b05", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "07ec8f76-62e4-466a-b8c7-c990c0f40bde", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "3d335b9e-4148-47cb-8921-eefc70a873da", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "a56fd991-02f2-489f-ac8d-b6f792436ffe", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "514c24df-a818-49f9-a72b-2453e6b88908", "target": "Atlas", "label": "BELONGS_TO"}}, {"data": {"source": "bee0d41b-03ac-4e49-89e5-7bc921bab4e2", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "e0e109b9-4819-4320-a7c3-2d83ef065b3e", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "4e9351ad-1b59-4d9c-a5c8-ad11df11cd9a", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "1d86b6cf-09ca-4438-b319-41e139d1b406", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "14ba44bf-920d-4d65-8be2-fbd375e7cb40", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "dcc72dc3-6dc9-4a5d-b922-457c255c7ea6", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "b16edb6e-d3d2-42e9-b632-b38919b75f37", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "5a537445-4717-463a-ae86-c565ef1eb207", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "2dea17b0-3e53-4204-b92c-7baa4846c949", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "311d2996-2ef1-47d1-a47b-ac94795a6768", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "e7104a8b-4eb2-4d9c-b553-cf105bccf088", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "202ef8f9-f270-407a-8e2f-737868dd1482", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "b34a7d5d-ed50-4f92-8aa0-b2db16963730", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "4803a8a6-cde1-4f70-aa95-e5d5ac7d449f", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "99cc7d39-9d9c-430e-b0d4-5ed17014932c", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "5be99ed7-e92c-4782-b322-cb04cad859b6", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "9eaa61a0-40d4-4e09-89a3-3f4d3b03d270", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "90060761-b06e-4cf8-8778-b7bdc5e8236f", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "2f99ccc2-ae67-4573-b0d0-5d94d003b401", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "ed515f9b-3a10-44c3-8435-d075f3276de0", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "0fb14bf1-bb3e-4e27-bdeb-d064503cc906", "target": "Phoenix", "label": "BELONGS_TO"}}, {"data": {"source": "a1e6be95-55bf-4746-9b3d-45f094e1456a", "target": "Company", "label": "BELONGS_TO"}}, {"data": {"source": "cd64fe04-ca72-450e-a84d-5636f63e884e", "target": "Company", "label": "BELONGS_TO"}}, {"data": {"source": "b2d5788b-52b4-4e1c-982a-f9978a6bc8ee", "target": "Company", "label": "BELONGS_TO"}}, {"data": {"source": "b98a66ca-285d-49b2-a702-6525e11a2726", "target": "Company", "label": "BELONGS_TO"}}, {"data": {"source": "fe94ff90-e82d-433a-a5d9-0ce0ca797cab", "target": "Company", "label": "BELONGS_TO"}}, {"data": {"source": "b7fae546-d58c-4e50-b9fd-2db4638a90d2", "target": "project orion", "label": "MENTIONS"}}, {"data": {"source": "f30925fa-d0c3-443e-8a83-0b9d057475ca", "target": "project orion", "label": "MENTIONS"}}, {"data": {"source": "7f207be6-47c8-4936-9132-99f7ac5e6bdf", "target": "project orion", "label": "MENTIONS"}}, {"data": {"source": "6c861004-5560-44c9-82c9-a6b7edba7b3e", "target": "devops", "label": "MENTIONS"}}, {"data": {"source": "c265707c-17db-41d7-ad97-5e179d01056a", "target": "mvp", "label": "MENTIONS"}}, {"data": {"source": "24ac519c-b2ce-435d-ac3c-31f3bdfd16da", "target": "mvp", "label": "MENTIONS"}}, {"data": {"source": "3ac59bff-0624-4b59-85d0-85cf88a81849", "target": "customer success", "label": "MENTIONS"}}, {"data": {"source": "5591bf8b-c3e0-4240-840c-73dc3625ad32", "target": "python", "label": "MENTIONS"}}, {"data": {"source": "5591bf8b-c3e0-4240-840c-73dc3625ad32", "target": "api", "label": "MENTIONS"}}, {"data": {"source": "43ee1278-fadc-4369-91b0-b4b0e8846999", "target": "api", "label": "MENTIONS"}}, {"data": {"source": "38388c43-289f-440e-800e-2bc26cfdb74f", "target": "api", "label": "MENTIONS"}}, {"data": {"source": "36bff216-b73c-4f5f-839a-979d9d9394dd", "target": "api", "label": "MENTIONS"}}, {"data": {"source": "2dea17b0-3e53-4204-b92c-7baa4846c949", "target": "api", "label": "MENTIONS"}}, {"data": {"source": "fe94ff90-e82d-433a-a5d9-0ce0ca797cab", "target": "api", "label": "MENTIONS"}}, {"data": {"source": "344b70fd-c6d2-44ee-9062-8fae8ff59171", "target": "react", "label": "MENTIONS"}}, {"data": {"source": "dcc72dc3-6dc9-4a5d-b922-457c255c7ea6", "target": "react", "label": "MENTIONS"}}, {"data": {"source": "344b70fd-c6d2-44ee-9062-8fae8ff59171", "target": "typescript", "label": "MENTIONS"}}, {"data": {"source": "5df713a9-f4ae-4ff7-b20b-b1b730801798", "target": "sql", "label": "MENTIONS"}}, {"data": {"source": "be32619e-1343-4b8e-aa82-7b5a3ed0e248", "target": "sql", "label": "MENTIONS"}}, {"data": {"source": "5a537445-4717-463a-ae86-c565ef1eb207", "target": "sql", "label": "MENTIONS"}}, {"data": {"source": "3cd63e95-c819-4358-b6d5-68c51872beea", "target": "redis", "label": "MENTIONS"}}, {"data": {"source": "3941ebfa-9963-4d31-889c-9f45998e6495", "target": "docker", "label": "MENTIONS"}}, {"data": {"source": "2d3c5d27-203a-4523-a9eb-9dc6774a5aad", "target": "rs256", "label": "MENTIONS"}}, {"data": {"source": "2d3c5d27-203a-4523-a9eb-9dc6774a5aad", "target": "jwt", "label": "MENTIONS"}}, {"data": {"source": "e98cbaaa-b742-41a5-ab87-19304c75e6b0", "target": "implementing websocket", "label": "MENTIONS"}}, {"data": {"source": "7f207be6-47c8-4936-9132-99f7ac5e6bdf", "target": "ecs fargate", "label": "MENTIONS"}}, {"data": {"source": "bec00b83-632e-4f0a-b726-c8401b4121bc", "target": "terraform", "label": "MENTIONS"}}, {"data": {"source": "c5caf5a4-8d52-42e1-8ded-859476838c92", "target": "github actions", "label": "MENTIONS"}}, {"data": {"source": "c5caf5a4-8d52-42e1-8ded-859476838c92", "target": "ci", "label": "MENTIONS"}}, {"data": {"source": "b34a7d5d-ed50-4f92-8aa0-b2db16963730", "target": "ci", "label": "MENTIONS"}}, {"data": {"source": "a1e6be95-55bf-4746-9b3d-45f094e1456a", "target": "ci", "label": "MENTIONS"}}, {"data": {"source": "467421f6-7805-4d54-8979-59279c34d6f8", "target": "cloudwatch", "label": "MENTIONS"}}, {"data": {"source": "38388c43-289f-440e-800e-2bc26cfdb74f", "target": "bug", "label": "MENTIONS"}}, {"data": {"source": "68bedeec-d92b-4b9d-8347-c12e6e308a4e", "target": "bug", "label": "MENTIONS"}}, {"data": {"source": "191b112f-c129-4645-9fd8-8b9fb23c0532", "target": "websocket", "label": "MENTIONS"}}, {"data": {"source": "d1956804-7e6f-490e-abae-268e731f71c8", "target": "ui", "label": "MENTIONS"}}, {"data": {"source": "e7104a8b-4eb2-4d9c-b553-cf105bccf088", "target": "ui", "label": "MENTIONS"}}, {"data": {"source": "2f99ccc2-ae67-4573-b0d0-5d94d003b401", "target": "ui", "label": "MENTIONS"}}, {"data": {"source": "83abe9fa-4da3-4da2-9d70-7b24f351ac54", "target": "fortune 500", "label": "MENTIONS"}}, {"data": {"source": "82e73117-3841-4cd8-8852-885b2d37869a", "target": "ml", "label": "MENTIONS"}}, {"data": {"source": "153636cc-22a9-4f42-9057-9920ba08317b", "target": "ml", "label": "MENTIONS"}}, {"data": {"source": "24ac519c-b2ce-435d-ac3c-31f3bdfd16da", "target": "q4", "label": "MENTIONS"}}, {"data": {"source": "0e9a70a7-77bc-424b-bf50-4bad23f4f292", "target": "using apache spark", "label": "MENTIONS"}}, {"data": {"source": "be32619e-1343-4b8e-aa82-7b5a3ed0e248", "target": "presto", "label": "MENTIONS"}}, {"data": {"source": "c78cad11-44ae-4624-a3e1-c60a0c0f32eb", "target": "apache hive metastore", "label": "MENTIONS"}}, {"data": {"source": "fecd757c-afc4-414e-ad22-3f5f6e7de7e3", "target": "apache kafka", "label": "MENTIONS"}}, {"data": {"source": "153636cc-22a9-4f42-9057-9920ba08317b", "target": "sagemaker", "label": "MENTIONS"}}, {"data": {"source": "df40d29b-e08d-4191-a903-817bfd30cb48", "target": "acid", "label": "MENTIONS"}}, {"data": {"source": "91026dc5-5a5e-4cb7-ac6e-449deb926887", "target": "kms", "label": "MENTIONS"}}, {"data": {"source": "a3ce048a-a2bf-482b-bc2e-cb699fb7d3ac", "target": "rto", "label": "MENTIONS"}}, {"data": {"source": "c0d07dca-a83a-46fd-8bda-6df0baec3355", "target": "apache atlas", "label": "MENTIONS"}}, {"data": {"source": "a56fd991-02f2-489f-ac8d-b6f792436ffe", "target": "excel", "label": "MENTIONS"}}, {"data": {"source": "bee0d41b-03ac-4e49-89e5-7bc921bab4e2", "target": "project phoenix", "label": "MENTIONS"}}, {"data": {"source": "e0e109b9-4819-4320-a7c3-2d83ef065b3e", "target": "android", "label": "MENTIONS"}}, {"data": {"source": "dcc72dc3-6dc9-4a5d-b922-457c255c7ea6", "target": "android", "label": "MENTIONS"}}, {"data": {"source": "4803a8a6-cde1-4f70-aa95-e5d5ac7d449f", "target": "android", "label": "MENTIONS"}}, {"data": {"source": "e0e109b9-4819-4320-a7c3-2d83ef065b3e", "target": "target", "label": "MENTIONS"}}, {"data": {"source": "b16edb6e-d3d2-42e9-b632-b38919b75f37", "target": "kmm", "label": "MENTIONS"}}, {"data": {"source": "b16edb6e-d3d2-42e9-b632-b38919b75f37", "target": "kotlin multiplatform mobile", "label": "MENTIONS"}}, {"data": {"source": "5a537445-4717-463a-ae86-c565ef1eb207", "target": "core data", "label": "MENTIONS"}}, {"data": {"source": "2dea17b0-3e53-4204-b92c-7baa4846c949", "target": "apollo", "label": "MENTIONS"}}, {"data": {"source": "311d2996-2ef1-47d1-a47b-ac94795a6768", "target": "firebase cloud messaging", "label": "MENTIONS"}}, {"data": {"source": "e7104a8b-4eb2-4d9c-b553-cf105bccf088", "target": "material design", "label": "MENTIONS"}}, {"data": {"source": "90060761-b06e-4cf8-8778-b7bdc5e8236f", "target": "q2", "label": "MENTIONS"}}, {"data": {"source": "fe94ff90-e82d-433a-a5d9-0ce0ca797cab", "target": "cto", "label": "MENTIONS"}}]; // Injected graph data placeholder
// Node type color/size mapping
const TYPES = {
'Memory': { color: '#ff3366', size: 5, particles: 1 }, // Rosso Cyber
'Topic': { color: '#00ff88', size: 10, particles: 2 }, // Verde Neon
'Project': { color: '#00ccff', size: 18, particles: 4 }, // Blu Elettrico
'default': { color: '#ffffff', size: 4, particles: 1 }
};
// Data adaptation: split nodes and links
const nodes = [];
const links = [];
(rawCytoscapeData.elements || rawCytoscapeData).forEach(el => {
const isEdge = Object.prototype.hasOwnProperty.call(el.data, 'source') && Object.prototype.hasOwnProperty.call(el.data, 'target');
if (isEdge) {
links.push({ source: el.data.source, target: el.data.target });
} else {
const conf = TYPES[el.data.type] || TYPES['default'];
nodes.push({
id: el.data.id,
...el.data,
color: conf.color,
val: conf.size
});
}
});
const gData = { nodes, links };
const statsNodesEl = document.getElementById('stat-nodes');
const statsLinksEl = document.getElementById('stat-links');
if (statsNodesEl) statsNodesEl.textContent = nodes.length;
if (statsLinksEl) statsLinksEl.textContent = links.length;
// 3D graph initialization
let currentMode = '3d';
let Graph3D, Graph2D;
Graph3D = ForceGraph3D()
(document.getElementById('3d-graph'))
.graphData(gData)
.backgroundColor('#000000')
// Node rendering
.nodeRelSize(6) // size multiplier
.nodeColor(node => node.color)
.nodeResolution(32)
.nodeOpacity(0.9)
// Link + data flow particles
.linkColor(() => 'rgba(0,255,255,0.35)')
.linkWidth(0.9)
.linkDirectionalParticles(3)
.linkDirectionalParticleWidth(4)
.linkDirectionalParticleSpeed(0.007)
.linkDirectionalParticleColor(() => '#7df9ff')
// Interaction
.onNodeClick(node => {
// Cinematic zoom on node click
const distance = 100;
const distRatio = 1 + distance/Math.hypot(node.x, node.y, node.z);
Graph3D.cameraPosition(
{ x: node.x * distRatio, y: node.y * distRatio, z: node.z * distRatio },
node,
2000
);
showDetails(node);
})
.onBackgroundClick(closeDetails);
Graph3D.d3Force('charge').strength(-115); // moderate repulsion for compact layout
Graph3D.d3Force('link').distance(105);
// Starfield background (Three.js scene augmentation)
const scene = Graph3D.scene();
// Generate 1500 random stars
const starGeometry = new THREE.BufferGeometry();
const starMaterial = new THREE.PointsMaterial({ color: 0xffffff, size: 1.5 });
const starVertices = [];
for(let i=0; i<1500; i++) {
const x = (Math.random() - 0.5) * 20000;
const y = (Math.random() - 0.5) * 20000;
const z = (Math.random() - 0.5) * 20000;
starVertices.push(x,y,z);
}
starGeometry.setAttribute('position', new THREE.Float32BufferAttribute(starVertices, 3));
const stars = new THREE.Points(starGeometry, starMaterial);
scene.add(stars);
// Mode switch functions (3D <-> 2D)
function switchTo3D() {
if (currentMode === '3d') return;
currentMode = '3d';
// Stop 2D graph animations before reinit
if (Graph2D) {
Graph2D.pauseAnimation();
}
// Update button styles
document.getElementById('btn-3d').style.background = 'rgba(0,210,255,0.2)';
document.getElementById('btn-3d').style.borderColor = '#00d2ff';
document.getElementById('btn-3d').style.color = '#00d2ff';
document.getElementById('btn-2d').style.background = 'rgba(255,255,255,0.05)';
document.getElementById('btn-2d').style.borderColor = 'rgba(255,255,255,0.2)';
document.getElementById('btn-2d').style.color = '#888';
// Clear container
const container = document.getElementById('3d-graph');
container.innerHTML = '';
// Reinitialize 3D graph
Graph3D = ForceGraph3D()(container)
.graphData(gData)
.backgroundColor('#000000')
.nodeRelSize(6)
.nodeColor(node => node.color)
.nodeResolution(32)
.nodeOpacity(0.9)
.linkColor(() => 'rgba(0,255,255,0.35)')
.linkWidth(0.9)
.linkDirectionalParticles(3)
.linkDirectionalParticleWidth(4)
.linkDirectionalParticleSpeed(0.007)
.linkDirectionalParticleColor(() => '#7df9ff')
.onNodeClick(node => {
const distance = 100;
const distRatio = 1 + distance/Math.hypot(node.x, node.y, node.z);
Graph3D.cameraPosition(
{ x: node.x * distRatio, y: node.y * distRatio, z: node.z * distRatio },
node,
2000
);
showDetails(node);
})
.onBackgroundClick(closeDetails);
Graph3D.d3Force('charge').strength(-115);
Graph3D.d3Force('link').distance(105);
// Re-add stars to new scene instance
const scene = Graph3D.scene();
scene.add(stars);
}
function switchTo2D() {
if (currentMode === '2d') return;
currentMode = '2d';
// Stop 3D graph animations before reinit
if (Graph3D) {
Graph3D.pauseAnimation();
}
// Update button styles
document.getElementById('btn-2d').style.background = 'rgba(0,210,255,0.2)';
document.getElementById('btn-2d').style.borderColor = '#00d2ff';
document.getElementById('btn-2d').style.color = '#00d2ff';
document.getElementById('btn-3d').style.background = 'rgba(255,255,255,0.05)';
document.getElementById('btn-3d').style.borderColor = 'rgba(255,255,255,0.2)';
document.getElementById('btn-3d').style.color = '#888';
// Clear container
const container = document.getElementById('3d-graph');
container.innerHTML = '';
// Initialize 2D graph
Graph2D = ForceGraph()(container)
.graphData(gData)
.backgroundColor('#000000')
.nodeRelSize(6)
.nodeColor(node => node.color)
.nodeCanvasObject((node, ctx, globalScale) => {
const label = node.id;
const fontSize = 12/globalScale;
ctx.font = `${fontSize}px Rajdhani`;
// Draw node circle
ctx.beginPath();
ctx.arc(node.x, node.y, node.val, 0, 2 * Math.PI, false);
ctx.fillStyle = node.color;
ctx.fill();
// Draw label if sufficiently zoomed
if (globalScale > 2 && node.type !== 'Memory') {
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillStyle = '#ffffff';
ctx.fillText(label, node.x, node.y + node.val + 8);
}
})
.linkColor(() => 'rgba(0,255,255,0.35)')
.linkWidth(0.9)
.linkDirectionalParticles(3)
.linkDirectionalParticleWidth(4)
.linkDirectionalParticleSpeed(0.007)
.linkDirectionalParticleColor(() => '#7df9ff')
.onNodeClick(node => {
Graph2D.centerAt(node.x, node.y, 1000);
Graph2D.zoom(4, 1000);
showDetails(node);
})
.onBackgroundClick(() => {
closeDetails();
Graph2D.zoomToFit(1000);
});
Graph2D.d3Force('charge').strength(-180);
Graph2D.d3Force('link').distance(120);
}
// (Optional auto-rotation removed for performance; particles provide motion)
let angle = 0; // reserved for future camera animation TODO
const distance = 400;
// UI logic
function showDetails(node) {
let html = `<h2>${node.id}</h2>`;
html += `<div class="metric" style="color: ${node.color}">// TYPE: ${node.type}</div>`;
html += `<div style="margin-top:20px; border-left: 2px solid ${node.color}; padding-left: 15px;">`;
if (node.text && node.text !== 'NaN') html += `<p>"${node.text.substring(0, 200)}..."</p>`;
if (node.source && node.source !== 'NaN') html += `<div class="metric">SRC: ${node.source}</div>`;
if (node.timestamp && node.timestamp !== 'NaN') html += `<div class="metric">T_STAMP: ${new Date(node.timestamp).toISOString().split('T')[0]}</div>`;
if (node.category && node.category !== 'NaN') html += `<div class="metric">CATEGORY: ${node.category}</div>`;
html += `</div>`;
// Connection statistics (source/target become objects after init)
const connected = gData.links.filter(l => {
const sourceId = typeof l.source === 'object' ? l.source.id : l.source;
const targetId = typeof l.target === 'object' ? l.target.id : l.target;
return sourceId === node.id || targetId === node.id;
});
html += `<div style="margin-top: 30px;">`;
html += `<div class="metric" style="margin-bottom: 10px;">// NETWORK CONNECTIONS [${connected.length}]</div>`;
connected.slice(0, 6).forEach(link => {
const sourceId = typeof link.source === 'object' ? link.source.id : link.source;
const targetId = typeof link.target === 'object' ? link.target.id : link.target;
const otherNodeId = sourceId === node.id ? targetId : sourceId;
const otherNode = gData.nodes.find(n => n.id === otherNodeId);
if (otherNode) {
html += `<div style="font-size: 0.9em; color: #888; margin-bottom: 5px;">
<span style="color:${otherNode.color}">●</span> ${otherNode.id}
</div>`;
}
});
if(connected.length > 6) html += `<div style="color:#555; font-size:0.8em;">... analyzing ${connected.length - 6} more signals</div>`;
html += `</div>`;
document.getElementById('details-content').innerHTML = html;
document.getElementById('details').classList.add('show');
}
function closeDetails() {
document.getElementById('details').classList.remove('show');
// Optional zoom reset placeholder
}
window.addEventListener('resize', () => {
if (currentMode === '3d' && Graph3D) {
Graph3D.width(window.innerWidth);
Graph3D.height(window.innerHeight);
} else if (currentMode === '2d' && Graph2D) {
Graph2D.width(window.innerWidth);
Graph2D.height(window.innerHeight);
}
});
</script>
</body>
</html>