# thaikhangvip123/api-project architecture

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

- Interactive diagram: https://gitdiagram.com/thaikhangvip123/api-project
- Repository: https://github.com/thaikhangvip123/api-project

## Overview

This repository is a multi-service API platform demonstrating user management and several API patterns: REST, GraphQL, gRPC, SOAP, webhooks, WebSockets, and WebRTC signaling. The main user-data workflow enters through an API, reaches the user service and its persistence layer, or is queried through GraphQL/gRPC adapters. Other services provide independent capabilities. Edges are limited to relationships shown in the sampled source or SOURCE INDEX; deployment wiring and unsampled modules are not inferred.

Main entry points: [`platform/services/webhook-service/src/app.js`](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/app.js) (Webhook Endpoint), [`platform/services/user-service/src/http.js`](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/http.js) (User REST API), [`platform/services/auth-service/src/http.js`](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/auth-service/src/http.js) (Auth HTTP API), [`platform/services/user-service/src/users.js`](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/users.js) (User Operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and Users"]
  node_auth_http["Auth HTTP API<br/>[http.js]"]
  node_auth_logic["Auth and Tokens<br/>[auth.js]"]
  node_user_http["User REST API<br/>[http.js]"]
  node_user_logic["User Operations<br/>[users.js]"]
  node_user_repo["User Repository<br/>[repository.js]"]
  node_user_db[("User Database<br/>[schema.prisma]")]
end

subgraph group_query["API Query Services"]
  node_graphql_http["GraphQL HTTP<br/>[http.js]"]
  node_graphql_resolvers["GraphQL Resolvers<br/>[resolvers.js]"]
  node_graphql_clients["Upstream Clients<br/>[clients.js]"]
  node_grpc_api["gRPC API<br/>[handlers.js]"]
  node_grpc_user_client["REST User Client<br/>[user-client.js]"]
end

subgraph group_events["Events and Integration"]
  node_webhook_api["Webhook Endpoint<br/>[app.js]"]
  node_webhook_signatures["Signature Verification<br/>[signature.js]"]
  node_webhook_idempotency["Idempotency Store<br/>[idempotency.js]"]
end

subgraph group_realtime["Realtime Communication"]
  node_chat_service["WebSocket Chat<br/>[service.js]"]
  node_chat_logic["Chat Message Logic<br/>[chat.js]"]
  node_signaling_service["WebRTC Signaling<br/>[service.js]"]
end

subgraph group_conversion["SOAP Conversion"]
  node_soap_api["SOAP Endpoint<br/>[app.py]"]
  node_number_words["Number Conversion<br/>[number_words.py]"]
end

node_api_consumer(("API Consumer"))
node_grpc_user_service["User Service"]

node_api_consumer -->|"calls"| node_auth_http
node_auth_http -->|"delegates to"| node_auth_logic
node_api_consumer -->|"calls"| node_user_http
node_user_http -->|"delegates to"| node_user_logic
node_user_logic -->|"uses"| node_user_repo
node_user_repo -.->|"reads and writes"| node_user_db
node_api_consumer -->|"queries"| node_graphql_http
node_graphql_http -->|"dispatches"| node_graphql_resolvers
node_graphql_resolvers -->|"calls"| node_graphql_clients
node_graphql_clients -->|"calls gRPC"| node_grpc_user_service
node_api_consumer -->|"calls"| node_grpc_api
node_grpc_api -->|"calls"| node_grpc_user_client
node_grpc_user_client -->|"requests users"| node_user_http
node_api_consumer -->|"sends event"| node_webhook_api
node_webhook_api -->|"verifies"| node_webhook_signatures
node_webhook_api -->|"claims event"| node_webhook_idempotency
node_api_consumer -->|"calls"| node_soap_api
node_soap_api -->|"converts"| node_number_words
node_api_consumer -->|"connects"| node_chat_service
node_chat_service -->|"uses"| node_chat_logic
node_api_consumer -->|"signals peers"| node_signaling_service

click node_auth_http "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/auth-service/src/http.js"
click node_auth_logic "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/auth-service/src/auth.js"
click node_user_http "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/http.js"
click node_user_logic "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/users.js"
click node_user_repo "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/repository.js"
click node_user_db "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/prisma/schema.prisma"
click node_graphql_http "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/graphql-service/src/http.js"
click node_graphql_resolvers "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/graphql-service/src/resolvers.js"
click node_graphql_clients "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/graphql-service/src/clients.js"
click node_grpc_api "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/grpc-service/src/handlers.js"
click node_grpc_user_client "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/grpc-service/src/user-client.js"
click node_webhook_api "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/app.js"
click node_webhook_signatures "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/signature.js"
click node_webhook_idempotency "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/idempotency.js"
click node_soap_api "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/soap-service/app.py"
click node_number_words "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/soap-service/number_words.py"
click node_chat_service "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/websocket-service/src/service.js"
click node_chat_logic "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/websocket-service/src/chat.js"
click node_signaling_service "https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webrtc-signaling/src/service.js"

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_auth_http,node_auth_logic,node_user_http,node_user_logic,node_user_repo,node_user_db,node_grpc_user_service toneBlue
class node_graphql_http,node_graphql_resolvers,node_graphql_clients,node_grpc_api,node_grpc_user_client toneAmber
class node_webhook_api,node_webhook_signatures,node_webhook_idempotency,node_api_consumer toneMint
class node_chat_service,node_chat_logic,node_signaling_service toneRose
class node_soap_api,node_number_words toneIndigo
```

## Components

### Identity and Users

- [Auth HTTP API](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/auth-service/src/http.js): `platform/services/auth-service/src/http.js`
- [Auth and Tokens](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/auth-service/src/auth.js): `platform/services/auth-service/src/auth.js`
- [User REST API](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/http.js): `platform/services/user-service/src/http.js`
- [User Operations](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/users.js): `platform/services/user-service/src/users.js`
- [User Repository](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/src/repository.js): `platform/services/user-service/src/repository.js`
- [User Database](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/user-service/prisma/schema.prisma): `platform/services/user-service/prisma/schema.prisma`

### API Query Services

- [GraphQL HTTP](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/graphql-service/src/http.js): `platform/services/graphql-service/src/http.js`
- [GraphQL Resolvers](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/graphql-service/src/resolvers.js): `platform/services/graphql-service/src/resolvers.js`
- [Upstream Clients](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/graphql-service/src/clients.js): `platform/services/graphql-service/src/clients.js`
- [gRPC API](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/grpc-service/src/handlers.js): `platform/services/grpc-service/src/handlers.js`
- [REST User Client](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/grpc-service/src/user-client.js): `platform/services/grpc-service/src/user-client.js`

### Events and Integration

- [Webhook Endpoint](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/app.js): `platform/services/webhook-service/src/app.js`
- [Signature Verification](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/signature.js): `platform/services/webhook-service/src/signature.js`
- [Idempotency Store](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webhook-service/src/idempotency.js): `platform/services/webhook-service/src/idempotency.js`

### Realtime Communication

- [WebSocket Chat](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/websocket-service/src/service.js): `platform/services/websocket-service/src/service.js`
- [Chat Message Logic](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/websocket-service/src/chat.js): `platform/services/websocket-service/src/chat.js`
- [WebRTC Signaling](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/webrtc-signaling/src/service.js): `platform/services/webrtc-signaling/src/service.js`

### SOAP Conversion

- [SOAP Endpoint](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/soap-service/app.py): `platform/services/soap-service/app.py`
- [Number Conversion](https://github.com/thaikhangvip123/api-project/blob/main/platform/services/soap-service/number_words.py): `platform/services/soap-service/number_words.py`

### Other components

- **API Consumer**
- **User Service**

## Connections

- API Consumer → Auth HTTP API: calls
- Auth HTTP API → Auth and Tokens: delegates to (evidence: `platform/services/auth-service/src/http.js`)
- API Consumer → User REST API: calls
- User REST API → User Operations: delegates to (evidence: `platform/services/user-service/src/http.js`)
- User Operations → User Repository: uses (evidence: `platform/services/user-service/src/users.js`)
- User Repository → User Database: reads and writes
- API Consumer → GraphQL HTTP: queries
- GraphQL HTTP → GraphQL Resolvers: dispatches (evidence: `platform/services/graphql-service/src/server.js`)
- GraphQL Resolvers → Upstream Clients: calls (evidence: `platform/services/graphql-service/src/resolvers.js`)
- Upstream Clients → User Service: calls gRPC (evidence: `platform/services/graphql-service/src/clients.js`)
- API Consumer → gRPC API: calls
- gRPC API → REST User Client: calls (evidence: `platform/services/grpc-service/src/handlers.js`)
- REST User Client → User REST API: requests users (evidence: `platform/services/grpc-service/src/user-client.js`)
- API Consumer → Webhook Endpoint: sends event
- Webhook Endpoint → Signature Verification: verifies (evidence: `platform/services/webhook-service/src/app.js`)
- Webhook Endpoint → Idempotency Store: claims event (evidence: `platform/services/webhook-service/src/app.js`)
- API Consumer → SOAP Endpoint: calls
- SOAP Endpoint → Number Conversion: converts (evidence: `platform/services/soap-service/app.py`)
- API Consumer → WebSocket Chat: connects
- WebSocket Chat → Chat Message Logic: uses (evidence: `platform/services/websocket-service/src/service.js`)
- API Consumer → WebRTC Signaling: signals peers
