# lamnguyen1407/smartassignai architecture

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

- Interactive diagram: https://gitdiagram.com/lamnguyen1407/smartassignai
- Repository: https://github.com/lamnguyen1407/smartassignai

## Overview

SmartAssignAI is an educational chat assistant with course and document management, user administration, and authentication. Its principal backend workflow accepts a question, manages chat context, classifies intent, checks cached answers when applicable, selects an answering path, and records messages. Document upload can send a file to an external processing API. The frontend contains chat, authentication, and dashboard views, but the available excerpts do not establish their HTTP wiring to backend routes. Chat internals are grouped at the service boundary because their implementation details were not excerpted.

Main entry points: [`backend/src/app.module.ts`](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/app.module.ts) (Application composition), [`backend/src/modules/chat/chat.controller.ts`](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/chat/chat.controller.ts) (Chat routes), [`backend/src/modules/course/course.controller.ts`](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/course/course.controller.ts) (Course routes), [`backend/src/modules/guards/jwt.guard.ts`](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/guards/jwt.guard.ts) (JWT guard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend experience"]
  node_chat_ui["Chat views"]
  node_login_ui["Login and signup"]
  node_dashboard_ui["Admin dashboards"]
end

subgraph group_identity["Identity and access"]
  node_auth_api["Authentication routes<br/>[auth.controller.ts]"]
  node_auth_logic["Authentication service<br/>[auth.service.ts]"]
  node_email["Email delivery<br/>[email.service.ts]"]
  node_jwt_guard["JWT guard<br/>[jwt.guard.ts]"]
  node_user_api["User administration routes<br/>[user.controller.ts]"]
  node_user_logic["User service<br/>[user.service.ts]"]
end

subgraph group_learning["Learning content"]
  node_course_api["Course routes"]
  node_course_logic["Course service<br/>[course.service.ts]"]
  node_file_api["File routes<br/>[file.controller.ts]"]
  node_file_logic["File service<br/>[file.service.ts]"]
end

subgraph group_assistant["Chat assistant"]
  node_chat_api["Chat routes<br/>[chat.controller.ts]"]
  node_chat_logic["Chat orchestration<br/>[chat.service.ts]"]
end

subgraph group_platform["Application platform"]
  node_mongo[("MongoDB")]
  node_app_module["Application composition<br/>[app.module.ts]"]
end

node_student(("Learner"))
node_admin(("Administrator"))
node_file_processor{{"Document processing API"}}

node_student -->|"asks questions"| node_chat_api
node_student -->|"authenticates"| node_auth_api
node_admin -->|"manages users"| node_user_api
node_admin -->|"manages courses"| node_course_api
node_admin -->|"manages files"| node_file_api
node_chat_api -->|"delegates chat"| node_chat_logic
node_chat_api -->|"sends uploaded file"| node_file_processor
node_chat_api -->|"stores processed chunks"| node_chat_logic
node_auth_api -->|"delegates auth"| node_auth_logic
node_auth_logic -->|"sends reset email"| node_email
node_user_api -->|"delegates user actions"| node_user_logic
node_course_api -->|"delegates course actions"| node_course_logic
node_course_api -->|"deletes course file"| node_course_logic
node_file_api -->|"delegates file actions"| node_file_logic
node_auth_api -->|"guards routes"| node_jwt_guard
node_chat_api -->|"guards routes"| node_jwt_guard
node_course_api -->|"guards routes"| node_jwt_guard
node_user_api -->|"guards routes"| node_jwt_guard
node_file_api -->|"guards routes"| node_jwt_guard
node_app_module -->|"configures connection"| node_mongo
node_app_module -->|"registers module"| node_auth_api
node_app_module -->|"registers module"| node_chat_api
node_app_module -->|"registers module"| node_course_api
node_app_module -->|"registers module"| node_file_api
node_app_module -->|"registers module"| node_user_api
node_student -.->|"uses"| node_chat_ui
node_admin -.->|"uses"| node_dashboard_ui

click node_chat_ui "https://github.com/lamnguyen1407/smartassignai/tree/main/frontend/src/app/(user)/chat"
click node_login_ui "https://github.com/lamnguyen1407/smartassignai/tree/main/frontend/src/components/auth"
click node_dashboard_ui "https://github.com/lamnguyen1407/smartassignai/tree/main/frontend/src/app/(dashboard)/dashboard"
click node_auth_api "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/auth/auth.controller.ts"
click node_auth_logic "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/auth/auth.service.ts"
click node_email "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/email/email.service.ts"
click node_jwt_guard "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/guards/jwt.guard.ts"
click node_user_api "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/user/user.controller.ts"
click node_user_logic "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/user/user.service.ts"
click node_course_api "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/course/course.controller.ts"
click node_course_logic "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/course/course.service.ts"
click node_file_api "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/file/file.controller.ts"
click node_file_logic "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/file/file.service.ts"
click node_chat_api "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/chat/chat.controller.ts"
click node_chat_logic "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/chat/chat.service.ts"
click node_app_module "https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/app.module.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_chat_ui,node_login_ui,node_dashboard_ui toneBlue
class node_auth_api,node_auth_logic,node_email,node_jwt_guard,node_user_api,node_user_logic toneAmber
class node_course_api,node_course_logic,node_file_api,node_file_logic,node_file_processor toneMint
class node_chat_api,node_chat_logic toneRose
class node_mongo,node_app_module,node_student,node_admin toneIndigo
```

## Components

### Frontend experience

- [Chat views](https://github.com/lamnguyen1407/smartassignai/tree/main/frontend/src/app/(user)/chat): `frontend/src/app/(user)/chat`
- [Login and signup](https://github.com/lamnguyen1407/smartassignai/tree/main/frontend/src/components/auth): `frontend/src/components/auth`
- [Admin dashboards](https://github.com/lamnguyen1407/smartassignai/tree/main/frontend/src/app/(dashboard)/dashboard): `frontend/src/app/(dashboard)/dashboard`

### Identity and access

- [Authentication routes](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/auth/auth.controller.ts): `backend/src/modules/auth/auth.controller.ts`
- [Authentication service](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/auth/auth.service.ts): `backend/src/modules/auth/auth.service.ts`
- [Email delivery](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/email/email.service.ts): `backend/src/modules/email/email.service.ts`
- [JWT guard](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/guards/jwt.guard.ts): `backend/src/modules/guards/jwt.guard.ts`
- [User administration routes](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/user/user.controller.ts): `backend/src/modules/user/user.controller.ts`
- [User service](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/user/user.service.ts): `backend/src/modules/user/user.service.ts`

### Learning content

- [Course routes](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/course/course.controller.ts): `backend/src/modules/course/course.controller.ts`
- [Course service](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/course/course.service.ts): `backend/src/modules/course/course.service.ts`
- [File routes](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/file/file.controller.ts): `backend/src/modules/file/file.controller.ts`
- [File service](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/file/file.service.ts): `backend/src/modules/file/file.service.ts`

### Chat assistant

- [Chat routes](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/chat/chat.controller.ts): `backend/src/modules/chat/chat.controller.ts`
- [Chat orchestration](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/modules/chat/chat.service.ts): `backend/src/modules/chat/chat.service.ts`

### Application platform

- **MongoDB**
- [Application composition](https://github.com/lamnguyen1407/smartassignai/blob/main/backend/src/app.module.ts): `backend/src/app.module.ts`

### Other components

- **Learner**
- **Administrator**
- **Document processing API**

## Connections

- Learner → Chat routes: asks questions (evidence: `backend/src/modules/chat/chat.controller.ts`)
- Learner → Authentication routes: authenticates (evidence: `backend/src/modules/auth/auth.controller.ts`)
- Administrator → User administration routes: manages users (evidence: `backend/src/modules/user/user.controller.ts`)
- Administrator → Course routes: manages courses (evidence: `backend/src/modules/course/course.controller.ts`)
- Administrator → File routes: manages files (evidence: `backend/src/modules/file/file.controller.ts`)
- Chat routes → Chat orchestration: delegates chat (evidence: `backend/src/modules/chat/chat.controller.ts`)
- Chat routes → Document processing API: sends uploaded file (evidence: `backend/src/modules/chat/chat.controller.ts`)
- Chat routes → Chat orchestration: stores processed chunks (evidence: `backend/src/modules/chat/chat.controller.ts`)
- Authentication routes → Authentication service: delegates auth (evidence: `backend/src/modules/auth/auth.controller.ts`)
- Authentication service → Email delivery: sends reset email (evidence: `backend/src/modules/auth/auth.service.ts`)
- User administration routes → User service: delegates user actions (evidence: `backend/src/modules/user/user.controller.ts`)
- Course routes → Course service: delegates course actions (evidence: `backend/src/modules/course/course.controller.ts`)
- Course routes → Course service: deletes course file (evidence: `backend/src/modules/course/course.controller.ts`)
- File routes → File service: delegates file actions (evidence: `backend/src/modules/file/file.controller.ts`)
- Authentication routes → JWT guard: guards routes (evidence: `backend/src/modules/auth/auth.controller.ts`)
- Chat routes → JWT guard: guards routes (evidence: `backend/src/modules/chat/chat.controller.ts`)
- Course routes → JWT guard: guards routes (evidence: `backend/src/modules/course/course.controller.ts`)
- User administration routes → JWT guard: guards routes (evidence: `backend/src/modules/user/user.controller.ts`)
- File routes → JWT guard: guards routes (evidence: `backend/src/modules/file/file.controller.ts`)
- Application composition → MongoDB: configures connection (evidence: `backend/src/app.module.ts`)
- Application composition → Authentication routes: registers module (evidence: `backend/src/app.module.ts`)
- Application composition → Chat routes: registers module (evidence: `backend/src/app.module.ts`)
- Application composition → Course routes: registers module (evidence: `backend/src/app.module.ts`)
- Application composition → File routes: registers module (evidence: `backend/src/app.module.ts`)
- Application composition → User administration routes: registers module (evidence: `backend/src/app.module.ts`)
- Learner → Chat views: uses
- Administrator → Admin dashboards: uses
