# manivannanbgi007/chat-app architecture

> Architecture diagram of the GitHub repository manivannanbgi007/chat-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/manivannanbgi007/chat-app
- Repository: https://github.com/manivannanbgi007/chat-app

## Overview

chat-app is a WhatsApp-like real-time messaging platform: users register and verify, find contacts, exchange one-to-one or group messages, and use calls, presence, notifications, media, and expiring status stories. The frontend is the user-facing entry point; independent services implement identity, conversations, messaging, and the supporting capabilities. The README documents the product scope and stack, while sampled source confirms selected internals such as session revocation, group management, message access checks, call signaling, and media storage. Many service-to-service links are not shown, so those are omitted.

Main entry points: [`frontend/src/pages/chat/ChatsPage.tsx`](https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/pages/chat/ChatsPage.tsx) (Chat experience), [`services/message-service/src/main/java/com/chatapp/message/service/MessageService.java`](https://github.com/manivannanbgi007/chat-app/blob/main/services/message-service/src/main/java/com/chatapp/message/service/MessageService.java) (Message handling), [`frontend/src/pages/auth/LoginPage.tsx`](https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/pages/auth/LoginPage.tsx) (Authentication screens), [`services/media-service/src/main/java/com/chatapp/media/service/MediaService.java`](https://github.com/manivannanbgi007/chat-app/blob/main/services/media-service/src/main/java/com/chatapp/media/service/MediaService.java) (Media management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_frontend["Chat application<br/>[App.tsx]"]
  node_authui["Authentication screens<br/>[LoginPage.tsx]"]
  node_chatui["Chat experience<br/>[ChatsPage.tsx]"]
  node_callengine["Call engine<br/>[callEngine.ts]"]
end

subgraph group_identity["Identity and users"]
  node_authapi["Authentication API"]
  node_authservice["Authentication and sessions"]
  node_sessions["Session management"]
  node_users["Profiles and contacts"]
  node_gateway["API gateway"]
end

subgraph group_messaging["Conversation and messaging"]
  node_conversations["Groups and conversations<br/>[GroupService.java]"]
  node_messages["Message handling"]
  node_websocket["Live chat delivery"]
end

subgraph group_realtime["Live communications"]
  node_presence["Presence"]
  node_calls["Call signaling<br/>[CallService.java]"]
  node_notifications["Notifications"]
end

subgraph group_capabilities["Media and updates"]
  node_media["Media management<br/>[MediaService.java]"]
  node_storage[("Object storage")]
  node_status["Status stories<br/>[StatusService.java]"]
  node_statusfeed["Status feed and privacy<br/>[FeedService.java]"]
end

node_user(("User"))

node_user -->|"uses"| node_frontend
node_frontend -->|"presents"| node_authui
node_user -->|"registers and verifies"| node_authui
node_authui -.->|"requests services"| node_gateway
node_gateway -.->|"routes requests"| node_authapi
node_authapi -.->|"handles authentication"| node_authservice
node_authservice -->|"creates sessions"| node_sessions
node_user -->|"finds people and chats"| node_chatui
node_chatui -.->|"manages groups"| node_conversations
node_chatui -.->|"sends and syncs"| node_messages
node_messages -->|"checks membership"| node_conversations
node_user -->|"receives live messages"| node_websocket
node_user -->|"shares presence"| node_presence
node_chatui -.->|"shows presence"| node_presence
node_user -->|"starts calls"| node_callengine
node_callengine -->|"sends signaling"| node_calls
node_user -->|"views notifications"| node_notifications
node_messages -.->|"triggers notifications"| node_notifications
node_user -->|"uploads attachments"| node_media
node_media -->|"stores and signs objects"| node_storage
node_user -->|"posts stories"| node_status
node_status -->|"attaches status media"| node_media
node_user -->|"views stories"| node_statusfeed

click node_frontend "https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/App.tsx"
click node_authui "https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/pages/auth/LoginPage.tsx"
click node_chatui "https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/pages/chat/ChatsPage.tsx"
click node_callengine "https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/features/calls/callEngine.ts"
click node_authapi "https://github.com/manivannanbgi007/chat-app/blob/main/services/auth-service/src/main/java/com/chatapp/auth/controller/AuthController.java"
click node_authservice "https://github.com/manivannanbgi007/chat-app/blob/main/services/auth-service/src/main/java/com/chatapp/auth/service/AuthenticationService.java"
click node_sessions "https://github.com/manivannanbgi007/chat-app/blob/main/services/auth-service/src/main/java/com/chatapp/auth/service/SessionService.java"
click node_users "https://github.com/manivannanbgi007/chat-app/blob/main/services/user-service/src/main/java/com/chatapp/user/service/ProfileService.java"
click node_gateway "https://github.com/manivannanbgi007/chat-app/blob/main/services/api-gateway/src/main/java/com/chatapp/gateway/GatewayApplication.java"
click node_conversations "https://github.com/manivannanbgi007/chat-app/blob/main/services/conversation-service/src/main/java/com/chatapp/conversation/service/GroupService.java"
click node_messages "https://github.com/manivannanbgi007/chat-app/blob/main/services/message-service/src/main/java/com/chatapp/message/service/MessageService.java"
click node_websocket "https://github.com/manivannanbgi007/chat-app/blob/main/services/message-service/src/main/java/com/chatapp/message/websocket/ChatStompController.java"
click node_presence "https://github.com/manivannanbgi007/chat-app/blob/main/services/presence-service/src/main/java/com/chatapp/presence/service/PresenceService.java"
click node_calls "https://github.com/manivannanbgi007/chat-app/blob/main/services/call-signaling-service/src/main/java/com/chatapp/call/service/CallService.java"
click node_notifications "https://github.com/manivannanbgi007/chat-app/blob/main/services/notification-service/src/main/java/com/chatapp/notification/service/NotificationEventService.java"
click node_media "https://github.com/manivannanbgi007/chat-app/blob/main/services/media-service/src/main/java/com/chatapp/media/service/MediaService.java"
click node_storage "https://github.com/manivannanbgi007/chat-app/blob/main/services/media-service/src/main/java/com/chatapp/media/storage/S3StorageService.java"
click node_status "https://github.com/manivannanbgi007/chat-app/blob/main/services/status-service/src/main/java/com/chatapp/status/service/StatusService.java"
click node_statusfeed "https://github.com/manivannanbgi007/chat-app/blob/main/services/status-service/src/main/java/com/chatapp/status/service/FeedService.java"

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_frontend,node_authui,node_chatui,node_callengine,node_user toneBlue
class node_authapi,node_authservice,node_sessions,node_users,node_gateway toneAmber
class node_conversations,node_messages,node_websocket toneMint
class node_presence,node_calls,node_notifications toneRose
class node_media,node_storage,node_status,node_statusfeed toneIndigo
```

## Components

### Web client

- [Chat application](https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Authentication screens](https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/pages/auth/LoginPage.tsx): `frontend/src/pages/auth/LoginPage.tsx`
- [Chat experience](https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/pages/chat/ChatsPage.tsx): `frontend/src/pages/chat/ChatsPage.tsx`
- [Call engine](https://github.com/manivannanbgi007/chat-app/blob/main/frontend/src/features/calls/callEngine.ts): `frontend/src/features/calls/callEngine.ts`

### Identity and users

- [Authentication API](https://github.com/manivannanbgi007/chat-app/blob/main/services/auth-service/src/main/java/com/chatapp/auth/controller/AuthController.java): `services/auth-service/src/main/java/com/chatapp/auth/controller/AuthController.java`
- [Authentication and sessions](https://github.com/manivannanbgi007/chat-app/blob/main/services/auth-service/src/main/java/com/chatapp/auth/service/AuthenticationService.java): `services/auth-service/src/main/java/com/chatapp/auth/service/AuthenticationService.java`
- [Session management](https://github.com/manivannanbgi007/chat-app/blob/main/services/auth-service/src/main/java/com/chatapp/auth/service/SessionService.java): `services/auth-service/src/main/java/com/chatapp/auth/service/SessionService.java`
- [Profiles and contacts](https://github.com/manivannanbgi007/chat-app/blob/main/services/user-service/src/main/java/com/chatapp/user/service/ProfileService.java): `services/user-service/src/main/java/com/chatapp/user/service/ProfileService.java`
- [API gateway](https://github.com/manivannanbgi007/chat-app/blob/main/services/api-gateway/src/main/java/com/chatapp/gateway/GatewayApplication.java): `services/api-gateway/src/main/java/com/chatapp/gateway/GatewayApplication.java`

### Conversation and messaging

- [Groups and conversations](https://github.com/manivannanbgi007/chat-app/blob/main/services/conversation-service/src/main/java/com/chatapp/conversation/service/GroupService.java): `services/conversation-service/src/main/java/com/chatapp/conversation/service/GroupService.java`
- [Message handling](https://github.com/manivannanbgi007/chat-app/blob/main/services/message-service/src/main/java/com/chatapp/message/service/MessageService.java): `services/message-service/src/main/java/com/chatapp/message/service/MessageService.java`
- [Live chat delivery](https://github.com/manivannanbgi007/chat-app/blob/main/services/message-service/src/main/java/com/chatapp/message/websocket/ChatStompController.java): `services/message-service/src/main/java/com/chatapp/message/websocket/ChatStompController.java`

### Live communications

- [Presence](https://github.com/manivannanbgi007/chat-app/blob/main/services/presence-service/src/main/java/com/chatapp/presence/service/PresenceService.java): `services/presence-service/src/main/java/com/chatapp/presence/service/PresenceService.java`
- [Call signaling](https://github.com/manivannanbgi007/chat-app/blob/main/services/call-signaling-service/src/main/java/com/chatapp/call/service/CallService.java): `services/call-signaling-service/src/main/java/com/chatapp/call/service/CallService.java`
- [Notifications](https://github.com/manivannanbgi007/chat-app/blob/main/services/notification-service/src/main/java/com/chatapp/notification/service/NotificationEventService.java): `services/notification-service/src/main/java/com/chatapp/notification/service/NotificationEventService.java`

### Media and updates

- [Media management](https://github.com/manivannanbgi007/chat-app/blob/main/services/media-service/src/main/java/com/chatapp/media/service/MediaService.java): `services/media-service/src/main/java/com/chatapp/media/service/MediaService.java`
- [Object storage](https://github.com/manivannanbgi007/chat-app/blob/main/services/media-service/src/main/java/com/chatapp/media/storage/S3StorageService.java): `services/media-service/src/main/java/com/chatapp/media/storage/S3StorageService.java`
- [Status stories](https://github.com/manivannanbgi007/chat-app/blob/main/services/status-service/src/main/java/com/chatapp/status/service/StatusService.java): `services/status-service/src/main/java/com/chatapp/status/service/StatusService.java`
- [Status feed and privacy](https://github.com/manivannanbgi007/chat-app/blob/main/services/status-service/src/main/java/com/chatapp/status/service/FeedService.java): `services/status-service/src/main/java/com/chatapp/status/service/FeedService.java`

### Other components

- **User**

## Connections

- User → Chat application: uses (evidence: `README.md`)
- Chat application → Authentication screens: presents (evidence: `README.md`)
- User → Authentication screens: registers and verifies (evidence: `README.md`)
- Authentication screens → API gateway: requests services
- API gateway → Authentication API: routes requests
- Authentication API → Authentication and sessions: handles authentication
- Authentication and sessions → Session management: creates sessions (evidence: `services/auth-service/src/main/java/com/chatapp/auth/service/SessionService.java`)
- User → Chat experience: finds people and chats (evidence: `README.md`)
- Chat experience → Groups and conversations: manages groups
- Chat experience → Message handling: sends and syncs
- Message handling → Groups and conversations: checks membership (evidence: `services/message-service/src/main/java/com/chatapp/message/service/MessageService.java`)
- User → Live chat delivery: receives live messages (evidence: `README.md`)
- User → Presence: shares presence (evidence: `README.md`)
- Chat experience → Presence: shows presence
- User → Call engine: starts calls (evidence: `README.md`)
- Call engine → Call signaling: sends signaling (evidence: `frontend/src/features/calls/callEngine.ts`)
- User → Notifications: views notifications (evidence: `README.md`)
- Message handling → Notifications: triggers notifications
- User → Media management: uploads attachments (evidence: `README.md`)
- Media management → Object storage: stores and signs objects (evidence: `services/media-service/src/main/java/com/chatapp/media/storage/S3StorageService.java`)
- User → Status stories: posts stories (evidence: `README.md`)
- Status stories → Media management: attaches status media (evidence: `services/status-service/src/main/java/com/chatapp/status/service/StatusService.java`)
- User → Status feed and privacy: views stories (evidence: `README.md`)
