# waasilaasif/social-graph-explorer architecture

> Architecture diagram of the GitHub repository waasilaasif/social-graph-explorer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/waasilaasif/social-graph-explorer
- Repository: https://github.com/waasilaasif/social-graph-explorer

## Overview

SocialGraphExplorer is a social-network prototype whose main workflow is user interaction through a React UI, REST requests to a Crow backend, domain operations, and JSON-backed state. Its major branches include account/profile management, social graph operations and analytics, and messaging with search and recommendations. The README documents broader features than the sampled implementation excerpts; those capabilities are represented at their documented module paths, while uncertain internal calls are omitted. The graph emphasizes the documented frontend/API boundary and sampled server, route, and user-manager responsibilities.

Main entry points: [`backend/api/server.cpp`](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/server.cpp) (Crow server), [`frontend/src/services/api.ts`](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/services/api.ts) (API client), [`backend/dsa/user/UserManager.cpp`](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/user/UserManager.cpp) (User management), [`frontend/src/App.tsx`](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/App.tsx) (App routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web interface"]
  node_app["App routing<br/>[App.tsx]"]
  node_mainui["Main workspace<br/>[MainUI.tsx]"]
  node_profiles["Profiles and posts<br/>[UserProfile.tsx]"]
  node_graphui["Graph explorer<br/>[GraphExplorer.jsx]"]
  node_statsui["Network analytics<br/>[GraphStats.tsx]"]
  node_popularui["Popularity board<br/>[PopularUsers.tsx]"]
  node_messagingui["Messaging hub<br/>[MessagingHub.jsx]"]
  node_apiservice["API client<br/>[api.ts]"]
end

subgraph group_api["REST API"]
  node_server["Crow server<br/>[server.cpp]"]
  node_userapi["User routes<br/>[UserRouter.h]"]
  node_graphroutes["Graph routes<br/>[graphRoutes.cpp]"]
  node_algoroutes["Algorithm routes<br/>[algoRoutes.cpp]"]
  node_msgroutes["Message routes<br/>[MsgRoutes.cpp]"]
end

subgraph group_social["Social network"]
  node_userdomain["User management<br/>[UserManager.cpp]"]
  node_socialgraph["Friend graph<br/>[Graph.h]"]
  node_graphalgos["Graph algorithms"]
  node_analytics["Graph analytics"]
end

subgraph group_messaging["Messaging"]
  node_messagecore["Messaging system"]
  node_messageindex["Message search<br/>[MsgTrie.cpp]"]
  node_messageanalytics["Message insights"]
  node_conversationgraph["Conversation graph"]
end

subgraph group_persistence["Persistence"]
  node_jsonio["JSON persistence<br/>[JSONLoader.cpp]"]
  node_jsonwriter["JSON writer<br/>[JSONWriter.cpp]"]
  node_jsonfiles[("JSON data files")]
end

node_person(("Network user"))

node_person -->|"uses"| node_app
node_app -->|"routes to"| node_mainui
node_app -->|"routes to"| node_profiles
node_app -->|"routes to"| node_statsui
node_app -->|"routes to"| node_popularui
node_mainui -->|"presents"| node_graphui
node_mainui -->|"presents"| node_messagingui
node_mainui -->|"requests data"| node_apiservice
node_profiles -->|"requests data"| node_apiservice
node_graphui -->|"requests data"| node_apiservice
node_statsui -->|"requests data"| node_apiservice
node_popularui -->|"requests data"| node_apiservice
node_messagingui -->|"requests data"| node_apiservice
node_apiservice -->|"HTTP REST"| node_server
node_server -->|"registers routes"| node_userapi
node_server -->|"registers routes"| node_graphroutes
node_server -->|"registers routes"| node_algoroutes
node_server -->|"registers routes"| node_msgroutes
node_server -->|"initializes"| node_userdomain
node_server -->|"loads messages"| node_jsonio
node_server -->|"loads conversations"| node_conversationgraph
node_userapi -->|"handles users"| node_userdomain
node_graphroutes -->|"updates and reads"| node_socialgraph
node_graphroutes -->|"runs traversals"| node_graphalgos
node_graphroutes -->|"gets statistics"| node_analytics
node_algoroutes -->|"runs recommendations"| node_graphalgos
node_algoroutes -->|"gets rankings"| node_analytics
node_userdomain -->|"updates friendships"| node_socialgraph
node_userdomain -->|"runs BFS"| node_graphalgos
node_userdomain -->|"saves users"| node_jsonwriter
node_msgroutes -->|"handles messaging"| node_messagecore
node_msgroutes -->|"searches messages"| node_messageindex
node_msgroutes -->|"gets insights"| node_messageanalytics
node_msgroutes -->|"uses interactions"| node_conversationgraph
node_messagecore -->|"indexes words"| node_messageindex
node_messagecore -->|"tracks conversations"| node_conversationgraph
node_messagecore -->|"persists messages"| node_jsonwriter
node_jsonio -->|"reads"| node_jsonfiles
node_jsonwriter -->|"writes"| node_jsonfiles
node_userdomain -->|"loads users"| node_jsonio

click node_app "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/App.tsx"
click node_mainui "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/MainUI.tsx"
click node_profiles "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/UserProfile.tsx"
click node_graphui "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/GraphExplorer.jsx"
click node_statsui "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/GraphStats.tsx"
click node_popularui "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/PopularUsers.tsx"
click node_messagingui "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/MessagingHub.jsx"
click node_apiservice "https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/services/api.ts"
click node_server "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/server.cpp"
click node_userapi "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/UserRouter.h"
click node_graphroutes "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/graphRoutes.cpp"
click node_algoroutes "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/algoRoutes.cpp"
click node_msgroutes "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/MsgRoutes.cpp"
click node_userdomain "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/user/UserManager.cpp"
click node_socialgraph "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/graph/Graph.h"
click node_graphalgos "https://github.com/waasilaasif/social-graph-explorer/tree/main/backend/algorithms"
click node_analytics "https://github.com/waasilaasif/social-graph-explorer/tree/main/backend/analytics"
click node_messagecore "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/messaging/MessagingSystem.cpp"
click node_messageindex "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/messaging_ds/MsgTrie.cpp"
click node_messageanalytics "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/messaging/MessageAnalytics.cpp"
click node_conversationgraph "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/messaging_ds/ConversationGraph.cpp"
click node_jsonio "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/storage/JSONLoader.cpp"
click node_jsonwriter "https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/storage/JSONWriter.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_mainui,node_profiles,node_graphui,node_statsui,node_popularui,node_messagingui,node_apiservice,node_person toneBlue
class node_server,node_userapi,node_graphroutes,node_algoroutes,node_msgroutes toneAmber
class node_userdomain,node_socialgraph,node_graphalgos,node_analytics toneMint
class node_messagecore,node_messageindex,node_messageanalytics,node_conversationgraph toneRose
class node_jsonio,node_jsonwriter,node_jsonfiles toneIndigo
```

## Components

### Web interface

- [App routing](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Main workspace](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/MainUI.tsx): `frontend/src/pages/MainUI.tsx`
- [Profiles and posts](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/UserProfile.tsx): `frontend/src/pages/UserProfile.tsx`
- [Graph explorer](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/GraphExplorer.jsx): `frontend/src/pages/GraphExplorer.jsx`
- [Network analytics](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/GraphStats.tsx): `frontend/src/pages/GraphStats.tsx`
- [Popularity board](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/PopularUsers.tsx): `frontend/src/pages/PopularUsers.tsx`
- [Messaging hub](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/pages/MessagingHub.jsx): `frontend/src/pages/MessagingHub.jsx`
- [API client](https://github.com/waasilaasif/social-graph-explorer/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`

### REST API

- [Crow server](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/server.cpp): `backend/api/server.cpp`
- [User routes](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/UserRouter.h): `backend/api/routes/UserRouter.h`
- [Graph routes](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/graphRoutes.cpp): `backend/api/routes/graphRoutes.cpp`
- [Algorithm routes](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/algoRoutes.cpp): `backend/api/routes/algoRoutes.cpp`
- [Message routes](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/api/routes/MsgRoutes.cpp): `backend/api/routes/MsgRoutes.cpp`

### Social network

- [User management](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/user/UserManager.cpp): `backend/dsa/user/UserManager.cpp`
- [Friend graph](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/graph/Graph.h): `backend/dsa/graph/Graph.h`
- [Graph algorithms](https://github.com/waasilaasif/social-graph-explorer/tree/main/backend/algorithms): `backend/algorithms`
- [Graph analytics](https://github.com/waasilaasif/social-graph-explorer/tree/main/backend/analytics): `backend/analytics`

### Messaging

- [Messaging system](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/messaging/MessagingSystem.cpp): `backend/messaging/MessagingSystem.cpp`
- [Message search](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/messaging_ds/MsgTrie.cpp): `backend/dsa/messaging_ds/MsgTrie.cpp`
- [Message insights](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/messaging/MessageAnalytics.cpp): `backend/messaging/MessageAnalytics.cpp`
- [Conversation graph](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/dsa/messaging_ds/ConversationGraph.cpp): `backend/dsa/messaging_ds/ConversationGraph.cpp`

### Persistence

- [JSON persistence](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/storage/JSONLoader.cpp): `backend/storage/JSONLoader.cpp`
- [JSON writer](https://github.com/waasilaasif/social-graph-explorer/blob/main/backend/storage/JSONWriter.cpp): `backend/storage/JSONWriter.cpp`
- **JSON data files**

### Other components

- **Network user**

## Connections

- Network user → App routing: uses
- App routing → Main workspace: routes to
- App routing → Profiles and posts: routes to
- App routing → Network analytics: routes to
- App routing → Popularity board: routes to
- Main workspace → Graph explorer: presents
- Main workspace → Messaging hub: presents
- Main workspace → API client: requests data
- Profiles and posts → API client: requests data
- Graph explorer → API client: requests data
- Network analytics → API client: requests data
- Popularity board → API client: requests data
- Messaging hub → API client: requests data
- API client → Crow server: HTTP REST
- Crow server → User routes: registers routes
- Crow server → Graph routes: registers routes
- Crow server → Algorithm routes: registers routes
- Crow server → Message routes: registers routes
- Crow server → User management: initializes
- Crow server → JSON persistence: loads messages
- Crow server → Conversation graph: loads conversations
- User routes → User management: handles users
- Graph routes → Friend graph: updates and reads
- Graph routes → Graph algorithms: runs traversals
- Graph routes → Graph analytics: gets statistics
- Algorithm routes → Graph algorithms: runs recommendations
- Algorithm routes → Graph analytics: gets rankings
- User management → Friend graph: updates friendships
- User management → Graph algorithms: runs BFS
- User management → JSON writer: saves users
- Message routes → Messaging system: handles messaging
- Message routes → Message search: searches messages
- Message routes → Message insights: gets insights
- Message routes → Conversation graph: uses interactions
- Messaging system → Message search: indexes words
- Messaging system → Conversation graph: tracks conversations
- Messaging system → JSON writer: persists messages
- JSON persistence → JSON data files: reads
- JSON writer → JSON data files: writes
- User management → JSON persistence: loads users
