@cyberskill/cyber-editor 3.7.2 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,189 +1,233 @@
1
- # Hướng dẫn
1
+ # Hướng Dẫn Sử Dụng Dự Án
2
2
 
3
- ## Yêu cầu
3
+ <!-- Mục lục -->
4
4
 
5
- - nvm (node version manager):
6
- - MacOS: <https://github.com/nvm-sh/nvm>
7
- - Windows: <https://github.com/coreybutler/nvm-windows>
8
- - Node: 20.15.0 (nvm sẽ tự động cài đặt phiên bản này nếu chưa có)
9
- - MacOS: <https://nodejs.org/dist/v20.15.0/node-v20.15.0.pkg>
10
- - Windows: <https://nodejs.org/dist/v20.15.0/node-v20.15.0-x64.msi>
11
- - Docker: <https://www.docker.com/products/docker-desktop>
12
- - Dùng npm, không dùng các công cụ khác để tránh xung đột
5
+ - [Yêu Cầu](#yêu-cầu)
6
+ - [Cài Đặt](#cài-đặt)
7
+ - [Chạy Dự Án](#chạy-dự-án)
8
+ - [Chạy môi trường development với Docker](#chạy-ở-môi-trường-development-với-docker)
9
+ - [Chạy ở môi trường development (Local)](#chạy-ở-môi-trường-development-local)
10
+ - [Các Script & Ý Nghĩa](#các-script--ý-nghĩa)
11
+ - [Quy Ước Viết Code & Đặt Tên](#quy-ước-viết-code--đặt-tên)
12
+ - [Quy Ước Đặt Tên](#quy-ước-đặt-tên)
13
+ - [Quy Ước Đặt Tên Chung](#quy-ước-đặt-tên-chung)
14
+ - [Quy Ước Tiền Tố Trong TypeScript](#quy-ước-tiền-tố-trong-typescript)
15
+ - [Quy Ước Đặt Tên Type Trong GraphQL](#quy-ước-đặt-tên-type-trong-graphql)
16
+ - [Quy Ước Đặt Tên Biến Môi Trường](#quy-ước-đặt-tên-biến-môi-trường)
17
+ - [Quy Ước Khi Import](#quy-ước-khi-import)
18
+ - [Quy Ước Viết Code](#quy-ước-viết-code)
19
+ - [Quy Ước Đặt Commit Message](#quy-ước-đặt-commit-message)
20
+ - [Cấu Trúc Thư Mục Và Ý Nghĩa](#cấu-trúc-thư-mục-và-ý-nghĩa)
21
+ - [Quy Trình Làm Việc Với Git](#quy-trình-làm-việc-với-git)
13
22
 
14
- ## Cài đặt
23
+ ---
15
24
 
16
- Sao chép file `.env.example` ra một file tương tự, đổi tên file thành `.env`
25
+ ## Yêu Cầu
17
26
 
18
- Chỉnh sửa một số trường `.env` cho phù hợp với môi trường máy cá nhân, có thể để như mặc định ở môi trường localhost
27
+ - **nvm (Node Version Manager):**
28
+ - MacOS: [nvm-sh/nvm](https://github.com/nvm-sh/nvm)
29
+ - Windows: [coreybutler/nvm-windows](https://github.com/coreybutler/nvm-windows)
30
+ - **Node.js:** 22.14.0
31
+ _(nvm sẽ tự động cài đặt phiên bản này nếu chưa có)_
32
+ - MacOS: [node-v22.14.0.pkg](https://nodejs.org/dist/v22.14.0/node-v22.14.0.pkg)
33
+ - Windows: [node-v22.14.0-x64.msi](https://nodejs.org/dist/v22.14.0/node-v22.14.0-x64.msi)
34
+ - **Docker:** [Docker Desktop](https://www.docker.com/products/docker-desktop)
35
+ - **Ghi chú:** Dùng **pnpm** để tránh xung đột với các công cụ khác.
19
36
 
20
- ## Chạy ở môi trường development - Docker (cần bật Docker trước)
37
+ ---
38
+
39
+ ## Cài Đặt
40
+
41
+ 1. **Tạo file cấu hình môi trường:**
42
+ Sao chép file `.env.example` thành `.env`.
43
+ 2. **Chỉnh sửa file `.env`:**
44
+ Cập nhật các trường cần thiết phù hợp với môi trường máy.
45
+
46
+ ---
47
+
48
+ ## Chạy Dự Án
49
+
50
+ ### Chạy ở môi trường development với Docker
51
+
52
+ _(Lưu ý: Hãy bật Docker trước khi chạy)_
21
53
 
22
54
  ```bash
23
55
  make build-development
24
56
  make start-development
25
57
  ```
26
58
 
27
- ## Chạy ở môi trường development (cần bật mongodb trước)
59
+ ### Chạy ở môi trường development (Local)
28
60
 
29
61
  ```bash
30
- npm i -f
31
- npm run dev
62
+ pnpm i -f
63
+ pnpm run dev
32
64
  ```
33
65
 
34
- Khi thành công sẽ thấy terminal/console hiển thị thông báo:
66
+ ---
35
67
 
36
- ```bash
37
- VITE v5.4.10 ready in 223 ms
68
+ ## Các Script & Ý Nghĩa
38
69
 
39
- ➜ Local: http://localhost:8001/
40
- ➜ Network: http://192.168.2.6:8001/
41
- ➜ press h + enter to show help
42
- ```
70
+ Kiểm tra lỗi lint:
43
71
 
44
- ## Kiểm tra lỗi (chạy thủ công)
72
+ | Script | Ý nghĩa |
73
+ | ---------------- | --------------------------------------- |
74
+ | **lint** | kiểm tra lỗi lint và typescript |
75
+ | **lint:fix** | tự động sửa các lỗi có thể sửa |
76
+ | **lint:inspect** | xem chi tiết các lint rule đang dùng |
77
+ | **reset** | cài đặt lại dependencies |
78
+ | **setup** | nâng cấp dependencies |
79
+ | **inspect** | xem chi tiết các dependencies đang dùng |
45
80
 
46
- ```bash
47
- npm run lint:check
48
- ```
81
+ ---
49
82
 
50
- ## Sửa lỗi (chạy thủ công)
83
+ ## Quy Ước Viết Code & Đặt Tên
51
84
 
52
- ```bash
53
- npm run lint:fix
54
- ```
85
+ ### Quy Ước Đặt Tên
55
86
 
56
- ## Một số quy ước
87
+ | Loại | Quy Ước | Ví Dụ |
88
+ | ---------------------- | ------------ | ------------------- |
89
+ | **Tên biến** | `camelCase` | `userName` |
90
+ | **Tên hàm** | `camelCase` | `getUserInfo()` |
91
+ | **Tên biến parameter** | `camelCase` | `id, userData` |
92
+ | **Tên biến argument** | `camelCase` | `fetchData(userId)` |
93
+ | **Tên biến private** | `_camelCase` | `_isHidden` |
94
+ | **Tên class** | `PascalCase` | `UserProfile` |
95
+ | **Tên hằng số** | `UPPER_CASE` | `MAX_RETRY_COUNT` |
96
+ | **Tên file** | `kebab-case` | `user-service.ts` |
97
+ | **Tên thư mục** | `kebab-case` | `services/` |
57
98
 
58
- ### Quy ước đặt tên
99
+ ### Quy Ước Đặt Tên Chung
59
100
 
60
- - Tên biến: `camelCase`
61
- - Tên hàm: `camelCase`
62
- - Tên biến parameter: `camelCase`
63
- - Tên biến argument: `camelCase`
64
- - Tên biến private: `_camelCase`
65
- - Tên class: `PascalCase`
66
- - Tên hằng số: `UPPER_CASE`
67
- - Tên file: `kebab-case`
68
- - Tên thư mục: `kebab-case`
101
+ | Loại | Tiền Tố | Quy Tắc | Ví Dụ |
102
+ | ------------------------ | ------------- | ----------------------------- | --------------------------- |
103
+ | **Biến đại diện input** | `I_Input_` | Tiền tố + loại + kiểu dữ liệu | `interface I_Input_User` |
104
+ | **Biến đại diện output** | `I_Response_` | Tiền tố + loại + kiểu dữ liệu | `interface I_Response_User` |
69
105
 
70
- ### Quy ước đặt tên chung
106
+ ### Quy Ước Tiền Tố Trong TypeScript
71
107
 
72
- - Tiền tố tuỳ thuộc vào từ khoá của typescript hoặc graphql
73
- - Quy tắc: Tiền tố + tên kiểu dữ liệu (ví dụ: `interface I_User`, `interface I_Role`)
74
- - Trường hợp biến đại diện cho input (kiểu dữ liệu đầu vào): Tiền tố + loại + tên kiểu dữ liệu (ví dụ: `interface T_Input_User` cho typescript, `input T_Input_CreateUser` cho graphql)
75
- - Trường hợp biến đại diện cho output (kiểu dữ liệu đầu ra): Tiền tố + loại + tên kiểu dữ liệu (ví dụ: `interface I_Response_User` cho typescript, `type T_Response_User` cho graphql)
108
+ | Loại | Tiền Tố | Dụ |
109
+ | ------------- | ------- | ------------------ |
110
+ | **Interface** | `I_` | `interface I_User` |
111
+ | **Type** | `T_` | `type T_User` |
112
+ | **Enum** | `E_` | `enum E_User` |
76
113
 
77
- ### Quy ước tiền tố typescript
114
+ ### Quy Ước Đặt Tên Type Trong GraphQL
78
115
 
79
- - Dùng tiền tố `I_` cho interface (ví dụ: `interface I_User`)
80
- - Dùng tiền tố `T_` cho type (ví dụ: `type T_User`)
81
- - Dùng tiền tố `E_` cho enum (ví dụ: `enum E_User`)
116
+ | Loại | Tiền Tố | Dụ |
117
+ | --------- | ------- | -------------------- |
118
+ | **Type** | `T_` | `type T_User` |
119
+ | **Input** | `I_` | `input I_CreateUser` |
82
120
 
83
- ### Quy ước đặt tên type graphql
121
+ ### Quy Ước Đặt Tên Biến Môi Trường
84
122
 
85
- - Dùng tiền tố `T_` cho type (ví dụ: `type T_User`)
86
- - Dùng tiền tố `I_` cho input (ví dụ: `input I_InputCreateUser`)
123
+ | Loại | Tiền Tố | Dụ |
124
+ | ----------- | -------------- | --------------------- |
125
+ | **React** | `REACT_APP_` | `REACT_APP_API_URL` |
126
+ | **Next.js** | `NEXT_PUBLIC_` | `NEXT_PUBLIC_API_KEY` |
127
+ | **Vite** | `VITE_` | `VITE_API_SECRET` |
128
+ | **Node.js** | `NODE_` | `NODE_ENV` |
87
129
 
88
- ### Quy ước đặt tên biến môi trường
130
+ ### Quy Ước Khi Import
89
131
 
90
- - Dùng tiền tố `REACT_APP_` cho biến môi trường của react
91
- - Dùng tiền tố `NEXT_PUBLIC_` cho biến môi trường của nextjs
92
- - Dùng tiền tố `VITE_` cho biến môi trường của vite
93
- - Dùng tiền tố `NODE_` cho biến môi trường của node
132
+ 1. Các thư viện bên ngoài **ở trên cùng**.
133
+ 2. Các module/hàm tiện ích **ở dưới**, cách một dòng trắng với phần trên.
134
+ 3. Định cấu hình đường dẫn để **import nhanh** trong `tsconfig.json`.
94
135
 
95
- ### Quy ước khi import: Xem các file có sẵn
136
+ ```ts
137
+ import React from 'react'; // Thư viện bên ngoài
96
138
 
97
- - Các thư viện cài đặt bên ngoài trên cùng
98
- - Các hàm tiện ích/module trong hệ thống ở dưới, cách một dòng trắng với các thư viện bên ngoài, cấu hình dường dẫn để import nhanh nằm ở file `tsconfig.json`
139
+ import { formatDate } from '#shared/utils'; // Module nội bộ
140
+ ```
99
141
 
100
- ### Quy ước viết code
142
+ ### Quy Ước Viết Code
101
143
 
102
- - Không dùng `var`
103
- - Không dùng `==`
104
- - Xóa `console.log` trước khi commit
105
- - Xóa `debugger` trước khi commit
106
- - Không dùng `any`, `unknown`, `never`
107
- - Không dùng `@ts-ignore`
108
- - Không dùng `@ts-nocheck`
144
+ **Làm**
109
145
 
110
- ### Quy ước đặt commit message
146
+ - Dùng `let` `const` thay vì `var`.
147
+ - Dùng `===` thay vì `==`.
148
+ - Xóa `console.log`, `alert` và `debugger` trước khi commit.
111
149
 
112
- - Commit message có dạng: `type(module/entity): message` (ví dụ: `feat(user): add user feature`, `fix(user): cannot create user`)
150
+ **Không làm**
113
151
 
114
- ## Cấu trúc thư mục và ý nghĩa
152
+ - Không dùng `any`, `unknown`, `never`.
153
+ - Không dùng `@ts-ignore`, `@ts-nocheck`.
115
154
 
116
- ```text
117
- .
118
- ├── .github => cấu hình workflow để chạy CI/CD cho github
119
- ├── docker => cấu hình triển khai docker
120
- ├── node_modules => thư mục chứa các thư viện ngoài
121
- ├── public
122
- │ ├── assets => Chứa các asset như fonts, images, icons
123
- ├── shared => Các file dùng chung
124
- │ └── components => Các component dùng chung
125
- │ ├── index.ts => import tất cả các component con vào index
126
- │ └── contexts => Các context dùng chung
127
- │ ├── index.ts => import tất cả các context con vào index
128
- │ └── hocs => Các hoc dùng chung
129
- │ ├── index.ts => import tất cả các hoc con vào index
130
- │ └── hooks => Các hook dùng chung
131
- │ ├── index.ts => import tất cả các hook con vào index
132
- │ └── i18n => Dịch thuật của hệ thống
133
- │ └── layouts => Các layout trong hệ thống
134
- │ ├── index.ts => import tất cả các layout con vào index
135
- │ └── typescript => Các typescript dùng chung
136
- │ ├── index.ts => import tất cả các typescript con vào index
137
- │ └── utils => Các hàm tiện ích dùng chung
138
- │ ├── index.ts => import tất cả các util con vào index
139
- ├── .env => biến môi trường (copy từ .env.example)
140
- ├── .env.example => mẫu biến môi trường
141
- ├── .gitignore => cấu hình git
142
- ├── .ncurc.cjs => cấu hình bỏ qua thư viện khi kiểm tra phiên bản mới
143
- ├── .npmrc => cấu hình npm
144
- ├── .nvmrc => phiên bản node
145
- ├── .eslint.config.js => cấu hình kiểm tra cú pháp code
146
- ├── index.html => file đầu vào
147
- ├── Makefile => lệnh make dùng để chạy docker
148
- ├── package-lock.json => cấu hình npm
149
- ├── package.json => cấu hình npm
150
- ├── README.md => hướng dẫn
151
- └── tsconfig.app.json => cấu hình typescript cho app
152
- └── tsconfig.json => cấu hình typescript
153
- └── tsconfig.node.json => cấu hình typescript cho server
154
- └── vite.config.ts => cấu hình vite
155
- ```
155
+ ### Quy Ước Đặt Commit Message
156
156
 
157
- ## Quy trình làm việc
157
+ | Loại Commit | Pháp | Ví Dụ |
158
+ | ----------------- | ----------------------- | ------------------------------------------ |
159
+ | **Tính năng mới** | `feat(module): message` | `feat(user): add user login` |
160
+ | **Sửa lỗi** | `fix(module): message` | `fix(auth): incorrect password validation` |
158
161
 
159
- ### 1. Tách nhánh từ `develop`
162
+ ## Cấu trúc thư mục và ý nghĩa
160
163
 
161
- ```bash
162
- git checkout -b branchName
164
+ ```text
165
+ │── .github/ # Cấu hình GitHub Actions hoặc tài liệu liên quan đến GitHub
166
+ │── dist/ # Thư mục build sau khi chạy `vite build`
167
+ │── node_modules/ # Thư viện và dependency của Node.js
168
+ │── src/ # Thư mục chứa mã nguồn chính
169
+ │ ├── modules/ # Các module chính trong ứng dụng
170
+ │ │ ├── [module-name]/ # Tên module
171
+ │ │ │ ├── module.scss # Styles cho module
172
+ │ │ │ ├── module.component.tsx # Component của module
173
+ │ │ │ ├── module.type.tsx # Typescript của module
174
+ │ │ │ ├── index.tsx # Export các file ngang cấp
175
+ │ ├── shared/ # Các tài nguyên dùng chung
176
+ │ │ ├── assets/
177
+ │ │ │ ├── styles/ # CSS dùng trong dự án
178
+ │ │ ├── components/ # Các component dùng chung giữa nhiều trang
179
+ │ │ ├── configs/ # Các file cấu hình
180
+ │ │ │ ├── env.ts # Cấu hình biến môi trường
181
+ │ │ ├── constants/ # Các hằng số dùng trong dự án
182
+ │ │ ├── providers/ # Providers chung của ứng dụng
183
+ │ │ ├── typescript/ # Kiểu dữ liệu TypeScript dùng trong dự án
184
+ │ ├── index.tsx # File đầu vào của dự án
185
+ │ ├── root.tsx # File khởi tạo React App
186
+ │ ├── vite-env.d.ts # Cấu hình typescript cho Vite
187
+ │── .env # File environment variables (bí mật, không commit lên Git)
188
+ │── .env.example # Mẫu `.env` để tham khảo
189
+ │── .gitignore # Danh sách các file cần bỏ qua khi commit
190
+ │── .ncurc.cjs # Cấu hình kiểm tra cập nhật package
191
+ │── .nvmrc # Cấu hình Node.js version manager
192
+ │── .simple-git-hooks.json # Cấu hình simple git hooks
193
+ │── eslint.config.js # Cấu hình ESLint
194
+ │── index.html # file html chính của dự án
195
+ │── package.json # Danh sách dependencies và scripts của dự án
196
+ │── pnpm-lock.yaml # File lock dependencies của pnpm
197
+ │── README.md # Tài liệu mô tả dự án
198
+ │── tsconfig.app.json # Cấu hình TypeScript cho ứng dụng
199
+ │── tsconfig.json # Cấu hình TypeScript chung
200
+ │── tsconfig.node.json # Cấu hình TypeScript cho Node.js
201
+ │── vite.config.ts # Cấu hình Vite
163
202
  ```
164
203
 
165
- ### 2. Sau khi code, thêm file muốn đẩy lên git vào staged
204
+ ## Quy Trình Làm Việc Với Git
205
+
206
+ 1. **Tạo nhánh mới từ `develop`**:
166
207
 
167
208
  ```bash
168
- git add fileName
209
+ git checkout develop
210
+ git pull origin develop
211
+ git checkout -b feature/new-feature
169
212
  ```
170
213
 
171
- hoặc thêm tất cả file
214
+ 2. **Commit theo chuẩn**:
172
215
 
173
216
  ```bash
174
- git add .
217
+ git commit -m "feat(module): mô tả ngắn gọn"
175
218
  ```
176
219
 
177
- ### 3. Đặt commit message
220
+ 3. **Rebase trước khi merge**:
178
221
 
179
222
  ```bash
180
- git commit -m "feat(user): add user feature"
223
+ git checkout develop
224
+ git pull origin develop
225
+ git checkout feature/new-feature
226
+ git rebase develop
181
227
  ```
182
228
 
183
- => Chờ hệ thống kiểm tra lỗi, nếu xảy ra lỗi, giải quyết lỗi và quay lại bước 2
229
+ 4. **Tạo Pull Request (PR)** đợi review trước khi merge vào `develop`.
184
230
 
185
- ### 4. Đẩy code lên git
231
+ ---
186
232
 
187
- ```bash
188
- git push
189
- ```
233
+ > **Ghi chú:** Nếu có bất kỳ thắc mắc nào, vui lòng liên hệ team phát triển!