# bt2701/facebook-microservice-be architecture

> Architecture diagram of the GitHub repository bt2701/facebook-microservice-be, 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/bt2701/facebook-microservice-be
- Repository: https://github.com/bt2701/facebook-microservice-be

## Overview

This is a Facebook-like microservice backend. Users register, authenticate, and manage profiles; they form friendships through requests and confirmations, then publish and browse posts, stories, comments, and reactions. The API gateway routes client traffic to domain services, while chat uses SignalR and contact messages are persisted with encrypted content. The README documents broader capabilities than the sampled source; unsampled product areas are included where the tree supports them, but their internal wiring is not inferred.

Main entry points: [`ApiGateway/Program.cs`](https://github.com/bt2701/facebook-microservice-be/blob/main/ApiGateway/Program.cs) (API gateway), [`PostWebApi/Controllers/PostController.cs`](https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Controllers/PostController.cs) (Post API), [`UserWebApi/Controllers/FriendController.cs`](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Controllers/FriendController.cs) (Friend API), [`UserWebApi/Controllers/UserController.cs`](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Controllers/UserController.cs) (User API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Client entry"]
  node_gateway["API gateway<br/>[Program.cs]"]
end

subgraph group_identity["Identity and friends"]
  node_user_api["User API<br/>[UserController.cs]"]
  node_user_repo["User repository<br/>[UserRepository.cs]"]
  node_email["Email delivery<br/>[EmailService.cs]"]
  node_friend_api["Friend API"]
  node_request_api["Request API"]
  node_request_repo["Request repository"]
end

subgraph group_social["Social content"]
  node_post_api["Post API<br/>[PostController.cs]"]
  node_post_repo["Post repository<br/>[PostRepository.cs]"]
  node_social_routes["Comments, reactions, stories"]
  node_drive["Image storage"]
end

subgraph group_messaging["Communication"]
  node_chat_hub["Chat hub<br/>[ChatHub.cs]"]
  node_message_api["Message API"]
  node_message_repo["Message repository"]
  node_encrypt["Message encryption<br/>[EncryptData.cs]"]
  node_notification_api["Notification API"]
  node_notification_repo["Notification repository"]
end

subgraph group_persistence["Service data"]
  node_user_db[("User database<br/>[UserDbContext.cs]")]
  node_request_db[("Request database")]
  node_post_db[("Post database<br/>[PostDbContext.cs]")]
  node_contact_db[("Contact database")]
  node_notification_db[("Notification database")]
end

node_client(("Web client"))

node_client -->|"sends requests"| node_gateway
node_gateway -->|"routes requests"| node_user_api
node_gateway -->|"routes requests"| node_friend_api
node_gateway -->|"routes requests"| node_request_api
node_gateway -->|"routes requests"| node_post_api
node_gateway -->|"routes requests"| node_message_api
node_gateway -->|"routes requests"| node_notification_api
node_client -->|"connects realtime"| node_chat_hub
node_user_api -->|"reads and writes"| node_user_repo
node_user_repo -->|"queries"| node_user_db
node_user_api -->|"sends email"| node_email
node_friend_api -->|"calls requests"| node_request_api
node_friend_api -->|"reads and writes"| node_user_db
node_request_api -->|"reads and writes"| node_request_repo
node_request_repo -->|"queries"| node_request_db
node_post_api -->|"fetches friends"| node_friend_api
node_post_api -->|"reads and writes"| node_post_repo
node_post_repo -->|"queries"| node_post_db
node_post_api -->|"uploads images"| node_drive
node_post_api -->|"supports content actions"| node_social_routes
node_message_api -->|"reads and writes"| node_message_repo
node_message_repo -->|"queries"| node_contact_db
node_message_api -->|"encodes and decodes"| node_encrypt
node_notification_api -->|"reads and writes"| node_notification_repo
node_notification_repo -->|"queries"| node_notification_db

click node_gateway "https://github.com/bt2701/facebook-microservice-be/blob/main/ApiGateway/Program.cs"
click node_user_api "https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Controllers/UserController.cs"
click node_user_repo "https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Repositories/UserRepository.cs"
click node_email "https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Services/EmailService.cs"
click node_friend_api "https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Controllers/FriendController.cs"
click node_request_api "https://github.com/bt2701/facebook-microservice-be/blob/main/RequestWebApi/Controllers/RequestController.cs"
click node_request_repo "https://github.com/bt2701/facebook-microservice-be/blob/main/RequestWebApi/Repositories/RequestRepository.cs"
click node_post_api "https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Controllers/PostController.cs"
click node_post_repo "https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Repositories/PostRepository.cs"
click node_social_routes "https://github.com/bt2701/facebook-microservice-be/tree/main/PostWebApi/Controllers"
click node_drive "https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Services/GoogleDriveService.cs"
click node_chat_hub "https://github.com/bt2701/facebook-microservice-be/blob/main/ChatService/Hubs/ChatHub.cs"
click node_message_api "https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/Controllers/MessageController.cs"
click node_message_repo "https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/Repositories/MessageRepository.cs"
click node_encrypt "https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/Utils/EncryptData.cs"
click node_notification_api "https://github.com/bt2701/facebook-microservice-be/blob/main/NotificationWebApi/Controllers/NotificationController.cs"
click node_notification_repo "https://github.com/bt2701/facebook-microservice-be/blob/main/NotificationWebApi/Repositories/NotificationRepository.cs"
click node_user_db "https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/UserDbContext.cs"
click node_request_db "https://github.com/bt2701/facebook-microservice-be/blob/main/RequestWebApi/RequestDbContext.cs"
click node_post_db "https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/PostDbContext.cs"
click node_contact_db "https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/ContactDbContext.cs"
click node_notification_db "https://github.com/bt2701/facebook-microservice-be/blob/main/NotificationWebApi/NotificationDbContext.cs"

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_gateway,node_client toneBlue
class node_user_api,node_user_repo,node_email,node_friend_api,node_request_api,node_request_repo toneAmber
class node_post_api,node_post_repo,node_social_routes,node_drive toneMint
class node_chat_hub,node_message_api,node_message_repo,node_encrypt,node_notification_api,node_notification_repo toneRose
class node_user_db,node_request_db,node_post_db,node_contact_db,node_notification_db toneIndigo
```

## Components

### Client entry

- [API gateway](https://github.com/bt2701/facebook-microservice-be/blob/main/ApiGateway/Program.cs): `ApiGateway/Program.cs`

### Identity and friends

- [User API](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Controllers/UserController.cs): `UserWebApi/Controllers/UserController.cs`
- [User repository](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Repositories/UserRepository.cs): `UserWebApi/Repositories/UserRepository.cs`
- [Email delivery](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Services/EmailService.cs): `UserWebApi/Services/EmailService.cs`
- [Friend API](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/Controllers/FriendController.cs): `UserWebApi/Controllers/FriendController.cs`
- [Request API](https://github.com/bt2701/facebook-microservice-be/blob/main/RequestWebApi/Controllers/RequestController.cs): `RequestWebApi/Controllers/RequestController.cs`
- [Request repository](https://github.com/bt2701/facebook-microservice-be/blob/main/RequestWebApi/Repositories/RequestRepository.cs): `RequestWebApi/Repositories/RequestRepository.cs`

### Social content

- [Post API](https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Controllers/PostController.cs): `PostWebApi/Controllers/PostController.cs`
- [Post repository](https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Repositories/PostRepository.cs): `PostWebApi/Repositories/PostRepository.cs`
- [Comments, reactions, stories](https://github.com/bt2701/facebook-microservice-be/tree/main/PostWebApi/Controllers): `PostWebApi/Controllers`
- [Image storage](https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/Services/GoogleDriveService.cs): `PostWebApi/Services/GoogleDriveService.cs`

### Communication

- [Chat hub](https://github.com/bt2701/facebook-microservice-be/blob/main/ChatService/Hubs/ChatHub.cs): `ChatService/Hubs/ChatHub.cs`
- [Message API](https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/Controllers/MessageController.cs): `ContactWebApi/Controllers/MessageController.cs`
- [Message repository](https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/Repositories/MessageRepository.cs): `ContactWebApi/Repositories/MessageRepository.cs`
- [Message encryption](https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/Utils/EncryptData.cs): `ContactWebApi/Utils/EncryptData.cs`
- [Notification API](https://github.com/bt2701/facebook-microservice-be/blob/main/NotificationWebApi/Controllers/NotificationController.cs): `NotificationWebApi/Controllers/NotificationController.cs`
- [Notification repository](https://github.com/bt2701/facebook-microservice-be/blob/main/NotificationWebApi/Repositories/NotificationRepository.cs): `NotificationWebApi/Repositories/NotificationRepository.cs`

### Service data

- [User database](https://github.com/bt2701/facebook-microservice-be/blob/main/UserWebApi/UserDbContext.cs): `UserWebApi/UserDbContext.cs`
- [Request database](https://github.com/bt2701/facebook-microservice-be/blob/main/RequestWebApi/RequestDbContext.cs): `RequestWebApi/RequestDbContext.cs`
- [Post database](https://github.com/bt2701/facebook-microservice-be/blob/main/PostWebApi/PostDbContext.cs): `PostWebApi/PostDbContext.cs`
- [Contact database](https://github.com/bt2701/facebook-microservice-be/blob/main/ContactWebApi/ContactDbContext.cs): `ContactWebApi/ContactDbContext.cs`
- [Notification database](https://github.com/bt2701/facebook-microservice-be/blob/main/NotificationWebApi/NotificationDbContext.cs): `NotificationWebApi/NotificationDbContext.cs`

### Other components

- **Web client**

## Connections

- Web client → API gateway: sends requests
- API gateway → User API: routes requests
- API gateway → Friend API: routes requests
- API gateway → Request API: routes requests
- API gateway → Post API: routes requests
- API gateway → Message API: routes requests
- API gateway → Notification API: routes requests
- Web client → Chat hub: connects realtime
- User API → User repository: reads and writes
- User repository → User database: queries
- User API → Email delivery: sends email
- Friend API → Request API: calls requests
- Friend API → User database: reads and writes
- Request API → Request repository: reads and writes
- Request repository → Request database: queries
- Post API → Friend API: fetches friends
- Post API → Post repository: reads and writes
- Post repository → Post database: queries
- Post API → Image storage: uploads images
- Post API → Comments, reactions, stories: supports content actions
- Message API → Message repository: reads and writes
- Message repository → Contact database: queries
- Message API → Message encryption: encodes and decodes
- Notification API → Notification repository: reads and writes
- Notification repository → Notification database: queries
