[PR #111] [MERGED] feat: big codebase refactor + new node display features #1108

Closed
opened 2026-05-03 01:58:46 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/reconurge/flowsint/pull/111
Author: @dextmorgn
Created: 1/21/2026
Status: Merged
Merged: 1/25/2026
Merged by: @dextmorgn

Base: mainHead: feat/node-refactor


📝 Commits (10+)

  • 3c39f9a feat(core): cleaner code separation + usage of nodeLabel
  • 2137616 feat(types): refactor to use nodeLabel
  • ffe2203 feat(enrichers): remove dependency for neo4jConnection
  • 5977832 feat(api): refactor to use nodeLabel, and proper usage of graphService
  • d0343cb feat(app): node display features + new nodeLabel
  • 3c6a23e feat(core): refactor Neo4jDict to GraphDict
  • cbea4c0 feat(core): add nodeShape to node property
  • 531bcf9 feat(app): add nodeShape to node property
  • 1ce2cbd feat: neo4j migrations
  • c8085c6 test(core): update test

📊 Changes

184 files changed (+7824 additions, -4497 deletions)

View changed files

📝 Makefile (+113 -99)
📝 docker-compose.dev.yml (+3 -3)
📝 docker-compose.prod.yml (+3 -3)
📝 docker-compose.yml (+5 -0)
📝 flowsint-api/app/api/routes/enrichers.py (+26 -23)
📝 flowsint-api/app/api/routes/flows.py (+44 -47)
📝 flowsint-api/app/api/routes/investigations.py (+7 -5)
📝 flowsint-api/app/api/routes/sketches.py (+140 -328)
📝 flowsint-api/app/api/routes/types.py (+10 -7)
📝 flowsint-api/app/main.py (+0 -10)
📝 flowsint-api/app/security/permissions.py (+5 -1)
📝 flowsint-app/package.json (+1 -1)
📝 flowsint-app/src/api/sketch-service.ts (+1 -1)
📝 flowsint-app/src/components/analyses/editor/extensions/mention/mention-list.tsx (+13 -6)
📝 flowsint-app/src/components/analyses/editor/extensions/mention/mention.tsx (+21 -15)
📝 flowsint-app/src/components/chat/chat-history.tsx (+1 -1)
📝 flowsint-app/src/components/flows/context-menu.tsx (+2 -3)
📝 flowsint-app/src/components/flows/editor.tsx (+17 -3)
📝 flowsint-app/src/components/flows/enricher-list-item.tsx (+2 -2)
📝 flowsint-app/src/components/flows/enricher-node.tsx (+2 -2)

...and 80 more files

📄 Description

  • usage of a new format of GraphNode to manipulate in front and back:

⚠️ Make sure you run make migrate-prod if you want to keep your existing neo4j data (or make migrate-dev in dev mode) after pulling those changes, so that the migration can parse those in the right format.

export type GraphNode = {
  id: string
  nodeType: string
  nodeLabel: string
  nodeProperties: NodeProperties // Domain, Ip, Individual...
  nodeSize: number
  nodeColor: string | null
  nodeIcon: keyof typeof LucideIcons | null
  nodeImage: string | null
  nodeFlag: flagColor | null
  nodeShape: NodeShape // circle, hexagonal, square, triangle
  nodeMetadata: NodeMetadata
  x: number
  y: number
  val?: number
  neighbors?: any[]
  links?: any[]
}

And proper way to store them in neo4j.

  • proper way and usage of GraphService, GraphRepository and GraphSerializer. Previous implementation was shady.
image

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/reconurge/flowsint/pull/111 **Author:** [@dextmorgn](https://github.com/dextmorgn) **Created:** 1/21/2026 **Status:** ✅ Merged **Merged:** 1/25/2026 **Merged by:** [@dextmorgn](https://github.com/dextmorgn) **Base:** `main` ← **Head:** `feat/node-refactor` --- ### 📝 Commits (10+) - [`3c39f9a`](https://github.com/reconurge/flowsint/commit/3c39f9aeb7975b3e4ae57fa04745612dd8d45c90) feat(core): cleaner code separation + usage of nodeLabel - [`2137616`](https://github.com/reconurge/flowsint/commit/21376168ef12b99cc68316ffe51d25c8ffab321d) feat(types): refactor to use nodeLabel - [`ffe2203`](https://github.com/reconurge/flowsint/commit/ffe2203410222144326bfefb9771fa70e7200915) feat(enrichers): remove dependency for neo4jConnection - [`5977832`](https://github.com/reconurge/flowsint/commit/5977832a1a970eacfa8ab3e54a423c50b4093dc2) feat(api): refactor to use nodeLabel, and proper usage of graphService - [`d0343cb`](https://github.com/reconurge/flowsint/commit/d0343cba50a6134a6cfef27775fda8d2994bcf92) feat(app): node display features + new nodeLabel - [`3c6a23e`](https://github.com/reconurge/flowsint/commit/3c6a23ebfa4a930597a50a159702182a3ebac430) feat(core): refactor Neo4jDict to GraphDict - [`cbea4c0`](https://github.com/reconurge/flowsint/commit/cbea4c09a8cf7c55f63468c386b352491a6255c3) feat(core): add nodeShape to node property - [`531bcf9`](https://github.com/reconurge/flowsint/commit/531bcf970e9a12786a2ff8c40d749335b41a39c5) feat(app): add nodeShape to node property - [`1ce2cbd`](https://github.com/reconurge/flowsint/commit/1ce2cbd7a50ba85d08e52f24469a06b320e5f66f) feat: neo4j migrations - [`c8085c6`](https://github.com/reconurge/flowsint/commit/c8085c6400e87834efbecf3cef2fe409dcb2270b) test(core): update test ### 📊 Changes **184 files changed** (+7824 additions, -4497 deletions) <details> <summary>View changed files</summary> 📝 `Makefile` (+113 -99) 📝 `docker-compose.dev.yml` (+3 -3) 📝 `docker-compose.prod.yml` (+3 -3) 📝 `docker-compose.yml` (+5 -0) 📝 `flowsint-api/app/api/routes/enrichers.py` (+26 -23) 📝 `flowsint-api/app/api/routes/flows.py` (+44 -47) 📝 `flowsint-api/app/api/routes/investigations.py` (+7 -5) 📝 `flowsint-api/app/api/routes/sketches.py` (+140 -328) 📝 `flowsint-api/app/api/routes/types.py` (+10 -7) 📝 `flowsint-api/app/main.py` (+0 -10) 📝 `flowsint-api/app/security/permissions.py` (+5 -1) 📝 `flowsint-app/package.json` (+1 -1) 📝 `flowsint-app/src/api/sketch-service.ts` (+1 -1) 📝 `flowsint-app/src/components/analyses/editor/extensions/mention/mention-list.tsx` (+13 -6) 📝 `flowsint-app/src/components/analyses/editor/extensions/mention/mention.tsx` (+21 -15) 📝 `flowsint-app/src/components/chat/chat-history.tsx` (+1 -1) 📝 `flowsint-app/src/components/flows/context-menu.tsx` (+2 -3) 📝 `flowsint-app/src/components/flows/editor.tsx` (+17 -3) 📝 `flowsint-app/src/components/flows/enricher-list-item.tsx` (+2 -2) 📝 `flowsint-app/src/components/flows/enricher-node.tsx` (+2 -2) _...and 80 more files_ </details> ### 📄 Description - usage of a new format of GraphNode to manipulate in front and back: ⚠️ Make sure you run `make migrate-prod` if you want to keep your existing neo4j data (or `make migrate-dev` in dev mode) after pulling those changes, so that the migration can parse those in the right format. ```js export type GraphNode = { id: string nodeType: string nodeLabel: string nodeProperties: NodeProperties // Domain, Ip, Individual... nodeSize: number nodeColor: string | null nodeIcon: keyof typeof LucideIcons | null nodeImage: string | null nodeFlag: flagColor | null nodeShape: NodeShape // circle, hexagonal, square, triangle nodeMetadata: NodeMetadata x: number y: number val?: number neighbors?: any[] links?: any[] } ``` And proper way to store them in neo4j. - proper way and usage of `GraphService`, `GraphRepository` and `GraphSerializer`. Previous implementation was shady. <img width="504" height="513" alt="image" src="https://github.com/user-attachments/assets/23752b7c-8386-44dd-9e66-d156649eae2a" /> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-03 01:58:46 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/flowsint#1108