# nmchien1106/kanby-backend architecture

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

- Interactive diagram: https://gitdiagram.com/nmchien1106/kanby-backend
- Repository: https://github.com/nmchien1106/kanby-backend

## Overview

Kanby is a Trello-like REST API. The principal workflow is an authenticated user organizing workspaces into boards, lists, and cards, then enriching cards with checklists, labels, attachments, and comments. Activity events and notifications provide collaboration feedback; search and API documentation are additional capabilities. The tree and README establish the broader feature set, while sampled controllers confirm selected calls; unsampled subsystem wiring is shown only where documented, so uncertain links are omitted.

Main entry points: [`src/config/typeorm.config.ts`](https://github.com/nmchien1106/kanby-backend/blob/main/src/config/typeorm.config.ts) (PostgreSQL Data), [`src/apis/auth/auth.controller.ts`](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/auth/auth.controller.ts) (Authentication), [`src/apis/board/board.controller.ts`](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/board/board.controller.ts) (Boards), [`src/apis/card/card.controller.ts`](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/card/card.controller.ts) (Cards)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Identity &amp; Access"]
  node_auth["Authentication<br/>[auth.controller.ts]"]
  node_users["User Profiles<br/>[user.controller.ts]"]
  node_roles["Roles &amp; Permissions<br/>[role.controller.ts]"]
end

subgraph group_work["Project Organization"]
  node_workspace["Workspaces"]
  node_boards["Boards"]
  node_lists["Lists<br/>[list.controller.ts]"]
  node_cards["Cards<br/>[card.controller.ts]"]
  node_checklists["Checklists"]
  node_labels["Labels"]
  node_search["Global Search<br/>[search.service.ts]"]
end

subgraph group_collab["Collaboration"]
  node_comments["Comments"]
  node_activity["Activity Log"]
  node_eventbus["Event Bus<br/>[event-bus.ts]"]
  node_notifications["Notifications"]
  node_sse["Live Notification Stream"]
end

subgraph group_platform["API Platform"]
  node_database[("PostgreSQL Data<br/>[typeorm.config.ts]")]
  node_redis[("Redis<br/>[redis.config.ts]")]
  node_cloudinary["Cloudinary<br/>[cloundinary.ts]"]
  node_email["Email Delivery<br/>[email.config.ts]"]
  node_openapi["OpenAPI Docs<br/>[openApiRouter.ts]"]
end

node_client(("API Client"))

node_client -->|"requests"| node_auth
node_client -->|"requests"| node_users
node_client -->|"requests"| node_workspace
node_client -->|"requests"| node_boards
node_client -->|"requests"| node_lists
node_client -->|"requests"| node_cards
node_client -->|"requests"| node_checklists
node_client -->|"requests"| node_labels
node_client -->|"requests"| node_comments
node_client -->|"requests"| node_activity
node_client -->|"requests"| node_notifications
node_client -->|"requests"| node_search
node_client -->|"views docs"| node_openapi
node_auth -->|"stores tokens"| node_redis
node_auth -->|"sends verification"| node_email
node_auth -->|"registers users"| node_users
node_workspace -->|"reads invites"| node_redis
node_boards -->|"reads invites"| node_redis
node_boards -->|"publishes events"| node_eventbus
node_cards -->|"via service"| node_database
node_lists -->|"via service"| node_database
node_labels -->|"via service"| node_database
node_checklists -->|"via service"| node_database
node_activity -->|"reads activities"| node_database
node_search -->|"searches entities"| node_database
node_notifications -->|"streams updates"| node_sse
node_users -.->|"uploads avatars"| node_cloudinary
node_cards -.->|"attachments"| node_cloudinary
node_eventbus -->|"logs events"| node_activity
node_eventbus -->|"notifies subscribers"| node_notifications

click node_auth "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/auth/auth.controller.ts"
click node_users "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/users/user.controller.ts"
click node_roles "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/role/role.controller.ts"
click node_workspace "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/workspace/workspace.controller.ts"
click node_boards "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/board/board.controller.ts"
click node_lists "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/list/list.controller.ts"
click node_cards "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/card/card.controller.ts"
click node_checklists "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/checklist/checklist.controller.ts"
click node_labels "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/label/label.controller.ts"
click node_comments "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/comment/comment.controller.ts"
click node_activity "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/activity/activity.controller.ts"
click node_eventbus "https://github.com/nmchien1106/kanby-backend/blob/main/src/events/event-bus.ts"
click node_notifications "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/notification/notification.controller.ts"
click node_sse "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/notification/SSE/notification-sse.service.ts"
click node_search "https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/search/search.service.ts"
click node_database "https://github.com/nmchien1106/kanby-backend/blob/main/src/config/typeorm.config.ts"
click node_redis "https://github.com/nmchien1106/kanby-backend/blob/main/src/config/redis.config.ts"
click node_cloudinary "https://github.com/nmchien1106/kanby-backend/blob/main/src/config/cloundinary.ts"
click node_email "https://github.com/nmchien1106/kanby-backend/blob/main/src/config/email.config.ts"
click node_openapi "https://github.com/nmchien1106/kanby-backend/blob/main/src/api-docs/openApiRouter.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_auth,node_users,node_roles,node_client toneBlue
class node_workspace,node_boards,node_lists,node_cards,node_checklists,node_labels,node_search toneAmber
class node_comments,node_activity,node_eventbus,node_notifications,node_sse toneMint
class node_database,node_redis,node_cloudinary,node_email,node_openapi toneRose
```

## Components

### Identity & Access

- [Authentication](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/auth/auth.controller.ts): `src/apis/auth/auth.controller.ts`
- [User Profiles](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/users/user.controller.ts): `src/apis/users/user.controller.ts`
- [Roles & Permissions](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/role/role.controller.ts): `src/apis/role/role.controller.ts`

### Project Organization

- [Workspaces](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/workspace/workspace.controller.ts): `src/apis/workspace/workspace.controller.ts`
- [Boards](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/board/board.controller.ts): `src/apis/board/board.controller.ts`
- [Lists](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/list/list.controller.ts): `src/apis/list/list.controller.ts`
- [Cards](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/card/card.controller.ts): `src/apis/card/card.controller.ts`
- [Checklists](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/checklist/checklist.controller.ts): `src/apis/checklist/checklist.controller.ts`
- [Labels](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/label/label.controller.ts): `src/apis/label/label.controller.ts`
- [Global Search](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/search/search.service.ts): `src/apis/search/search.service.ts`

### Collaboration

- [Comments](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/comment/comment.controller.ts): `src/apis/comment/comment.controller.ts`
- [Activity Log](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/activity/activity.controller.ts): `src/apis/activity/activity.controller.ts`
- [Event Bus](https://github.com/nmchien1106/kanby-backend/blob/main/src/events/event-bus.ts): `src/events/event-bus.ts`
- [Notifications](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/notification/notification.controller.ts): `src/apis/notification/notification.controller.ts`
- [Live Notification Stream](https://github.com/nmchien1106/kanby-backend/blob/main/src/apis/notification/SSE/notification-sse.service.ts): `src/apis/notification/SSE/notification-sse.service.ts`

### API Platform

- [PostgreSQL Data](https://github.com/nmchien1106/kanby-backend/blob/main/src/config/typeorm.config.ts): `src/config/typeorm.config.ts`
- [Redis](https://github.com/nmchien1106/kanby-backend/blob/main/src/config/redis.config.ts): `src/config/redis.config.ts`
- [Cloudinary](https://github.com/nmchien1106/kanby-backend/blob/main/src/config/cloundinary.ts): `src/config/cloundinary.ts`
- [Email Delivery](https://github.com/nmchien1106/kanby-backend/blob/main/src/config/email.config.ts): `src/config/email.config.ts`
- [OpenAPI Docs](https://github.com/nmchien1106/kanby-backend/blob/main/src/api-docs/openApiRouter.ts): `src/api-docs/openApiRouter.ts`

### Other components

- **API Client**

## Connections

- API Client → Authentication: requests
- API Client → User Profiles: requests
- API Client → Workspaces: requests
- API Client → Boards: requests
- API Client → Lists: requests
- API Client → Cards: requests
- API Client → Checklists: requests
- API Client → Labels: requests
- API Client → Comments: requests
- API Client → Activity Log: requests
- API Client → Notifications: requests
- API Client → Global Search: requests
- API Client → OpenAPI Docs: views docs
- Authentication → Redis: stores tokens
- Authentication → Email Delivery: sends verification
- Authentication → User Profiles: registers users
- Workspaces → Redis: reads invites
- Boards → Redis: reads invites
- Boards → Event Bus: publishes events
- Cards → PostgreSQL Data: via service
- Lists → PostgreSQL Data: via service
- Labels → PostgreSQL Data: via service
- Checklists → PostgreSQL Data: via service
- Activity Log → PostgreSQL Data: reads activities
- Global Search → PostgreSQL Data: searches entities
- Notifications → Live Notification Stream: streams updates
- User Profiles → Cloudinary: uploads avatars
- Cards → Cloudinary: attachments
- Event Bus → Activity Log: logs events
- Event Bus → Notifications: notifies subscribers
