# extim-org/socia-media-assistant architecture

> Architecture diagram of the GitHub repository extim-org/socia-media-assistant, 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/extim-org/socia-media-assistant
- Repository: https://github.com/extim-org/socia-media-assistant

## Overview

This repository combines an admin dashboard with a backend for configuring and monitoring a Meta messaging automation product. The principal external workflow is Meta delivering a webhook event to the backend, which delegates event handling to the webhook service; the tree also shows FSM session handling and Meta Graph API integration capabilities. Admin workflows cover login, bot/rule configuration, dashboard statistics and orders, and user management. UI-to-API wiring and the internals of unsampled services are not shown, so those links are omitted.

Main entry points: [`backend/src/auth/auth.service.ts`](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/auth/auth.service.ts) (Credential and token service), [`backend/src/webhook/webhook.controller.ts`](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/webhook/webhook.controller.ts) (Webhook endpoint), [`backend/src/prisma/prisma.service.ts`](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/prisma/prisma.service.ts) (Prisma client), [`backend/src/auth/auth.controller.ts`](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/auth/auth.controller.ts) (Authentication routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Admin interface"]
  node_dashboard_ui["Dashboard screens<br/>[page.tsx]"]
  node_bot_settings_ui["Bot settings<br/>[page.tsx]"]
  node_orders_ui["Orders view<br/>[page.tsx]"]
  node_users_ui["Users view<br/>[page.tsx]"]
  node_login_ui["Login screen<br/>[page.tsx]"]
end

subgraph group_api["Admin API"]
  node_auth_controller["Authentication routes<br/>[auth.controller.ts]"]
  node_auth_service["Credential and token service<br/>[auth.service.ts]"]
  node_dashboard_controller["Dashboard routes"]
  node_dashboard_service["Dashboard data service"]
  node_users_controller["User routes"]
  node_users_service["User service<br/>[users.service.ts]"]
  node_config_controller["Bot config routes"]
  node_config_service["Bot config service"]
end

subgraph group_automation["Messaging automation"]
  node_webhook_controller["Webhook endpoint"]
  node_webhook_service["Event processor<br/>[webhook.service.ts]"]
  node_fsm_service["Conversation FSM<br/>[fsm.service.ts]"]
  node_meta_service["Meta Graph client<br/>[meta.service.ts]"]
end

subgraph group_state["Persistence and state"]
  node_prisma_service["Prisma client<br/>[prisma.service.ts]"]
  node_database[("Application database")]
  node_session_map[("In-memory sessions<br/>[fsm.service.ts]")]
end

node_admin(("Admin user"))
node_meta_platform(("Meta platform"))
node_jwt_service["JWT service"]
node_graph_api(("Meta Graph API"))

node_webhook_controller -->|"processes events"| node_webhook_service
node_meta_platform -->|"delivers events"| node_webhook_controller
node_dashboard_controller -->|"requests dashboard data"| node_dashboard_service
node_users_controller -->|"manages users"| node_users_service
node_config_controller -->|"manages configuration"| node_config_service
node_auth_controller -->|"validates and logs in"| node_auth_service
node_auth_service -->|"reads admin"| node_prisma_service
node_auth_service -->|"signs token"| node_jwt_service
node_prisma_service -->|"connects"| node_database
node_fsm_service -->|"reads and writes"| node_session_map
node_meta_service -->|"sends requests"| node_graph_api

click node_dashboard_ui "https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/page.tsx"
click node_bot_settings_ui "https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/bot-settings/page.tsx"
click node_orders_ui "https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/orders/page.tsx"
click node_users_ui "https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/users/page.tsx"
click node_login_ui "https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/login/page.tsx"
click node_auth_controller "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/auth/auth.service.ts"
click node_dashboard_controller "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/dashboard/dashboard.controller.ts"
click node_dashboard_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/dashboard/dashboard.service.ts"
click node_users_controller "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/users/users.controller.ts"
click node_users_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/users/users.service.ts"
click node_config_controller "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/bot-config/bot-config.controller.ts"
click node_config_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/bot-config/bot-config.service.ts"
click node_webhook_controller "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/webhook/webhook.controller.ts"
click node_webhook_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/webhook/webhook.service.ts"
click node_fsm_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/fsm/fsm.service.ts"
click node_meta_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/meta/meta.service.ts"
click node_prisma_service "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/prisma/prisma.service.ts"
click node_session_map "https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/fsm/fsm.service.ts"

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_dashboard_ui,node_bot_settings_ui,node_orders_ui,node_users_ui,node_login_ui,node_admin toneBlue
class node_auth_controller,node_auth_service,node_dashboard_controller,node_dashboard_service,node_users_controller,node_users_service,node_config_controller,node_config_service toneAmber
class node_webhook_controller,node_webhook_service,node_fsm_service,node_meta_service,node_graph_api toneMint
class node_prisma_service,node_database,node_session_map toneRose
class node_meta_platform,node_jwt_service toneIndigo
```

## Components

### Admin interface

- [Dashboard screens](https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/page.tsx): `frontend/src/app/dashboard/page.tsx`
- [Bot settings](https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/bot-settings/page.tsx): `frontend/src/app/dashboard/bot-settings/page.tsx`
- [Orders view](https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/orders/page.tsx): `frontend/src/app/dashboard/orders/page.tsx`
- [Users view](https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/dashboard/users/page.tsx): `frontend/src/app/dashboard/users/page.tsx`
- [Login screen](https://github.com/extim-org/socia-media-assistant/blob/main/frontend/src/app/login/page.tsx): `frontend/src/app/login/page.tsx`

### Admin API

- [Authentication routes](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/auth/auth.controller.ts): `backend/src/auth/auth.controller.ts`
- [Credential and token service](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/auth/auth.service.ts): `backend/src/auth/auth.service.ts`
- [Dashboard routes](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/dashboard/dashboard.controller.ts): `backend/src/dashboard/dashboard.controller.ts`
- [Dashboard data service](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/dashboard/dashboard.service.ts): `backend/src/dashboard/dashboard.service.ts`
- [User routes](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/users/users.controller.ts): `backend/src/users/users.controller.ts`
- [User service](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/users/users.service.ts): `backend/src/users/users.service.ts`
- [Bot config routes](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/bot-config/bot-config.controller.ts): `backend/src/bot-config/bot-config.controller.ts`
- [Bot config service](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/bot-config/bot-config.service.ts): `backend/src/bot-config/bot-config.service.ts`

### Messaging automation

- [Webhook endpoint](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/webhook/webhook.controller.ts): `backend/src/webhook/webhook.controller.ts`
- [Event processor](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/webhook/webhook.service.ts): `backend/src/webhook/webhook.service.ts`
- [Conversation FSM](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/fsm/fsm.service.ts): `backend/src/fsm/fsm.service.ts`
- [Meta Graph client](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/meta/meta.service.ts): `backend/src/meta/meta.service.ts`

### Persistence and state

- [Prisma client](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/prisma/prisma.service.ts): `backend/src/prisma/prisma.service.ts`
- **Application database**
- [In-memory sessions](https://github.com/extim-org/socia-media-assistant/blob/main/backend/src/fsm/fsm.service.ts): `backend/src/fsm/fsm.service.ts`

### Other components

- **Admin user**
- **Meta platform**
- **JWT service**
- **Meta Graph API**

## Connections

- Webhook endpoint → Event processor: processes events
- Meta platform → Webhook endpoint: delivers events
- Dashboard routes → Dashboard data service: requests dashboard data
- User routes → User service: manages users
- Bot config routes → Bot config service: manages configuration
- Authentication routes → Credential and token service: validates and logs in
- Credential and token service → Prisma client: reads admin
- Credential and token service → JWT service: signs token
- Prisma client → Application database: connects
- Conversation FSM → In-memory sessions: reads and writes
- Meta Graph client → Meta Graph API: sends requests
