## Code First
| Mảng | Nội dung cụ thể cần học |
| ---------------- | ------------------------------------------------------------------- |
| ASP.NET Core API | Tạo project, định nghĩa model bằng Code First, tạo và gọi CRUD APIs |
| EF Core | Thiết lập mối quan hệ, data annotations, migrations |
| SQL Server | Tạo database tự động từ Code First |
| ReactJS | Functional components, hooks (`useState`, `useEffect`), routing |
| Axios/Fetch | Gọi API, xử lý response, error |
| RESTful APIs | Cách thiết kế API đúng chuẩn (GET, POST, PUT, DELETE) |
| UI/UX | Thiết kế form nhập liệu, hiển thị danh sách, thông báo lỗi |
## Database First
| Mảng | Nội dung cụ thể cần học Database First |
| ---------------------------- | ----------------------------------------- |
| **SQL Server** | Chạy script `.sql`, hiểu quan hệ 1-n,m-n |
| **EF Core – Database First** | Model thủ công |
| **ASP.NET Core API** | Thiết kế API theo chuẩn RESTful |
| **ReactJS** | Giao diện CRUD, xử lý state, gọi API |
| **Axios/Fetch** | Giao tiếp với backend |
| **Validation** | Cả phía client và server |
| **Hooks** | `useState`, `useEffect`, ... |
* Chú ý các Dependency của useEffect
a. Không có
b. Có rỗng []
c. Có tham số
* Chú ý cách sử dụng useState
## A. Phần Server - Backend Development
### I. Database Design
- Cách thiết kế database trên SQL Server,MongoDB
### II. Backend Development – ASP.NET Core API
1. Cấu hình Entity Framework Core với Database First
2. CRUD APIs
3. LinQ
### III. Authentication / Authhorization
- Sinh ra token -> nhờ Username & Password (JWT)
- Tuyệt đối không bao giờ được lưu token ở trong localstorage => lưu ở trong cookie và memory (Nghiên cứu thêm Redux,Context API)
- Code phía server phải Authorize
- Biết sử dụng công cụ Postman
## B. Phần Client - Frontend Development
### 1.React
- Cách tạo ứng dụng React như thế nào ?
- Flow chạy react như thế nào ?
- Biêt cách truyền dữ liệu từ component cha -> con
- Biết cách truyền dữ liệu từ con -> cha ( hàm )
- Biết sử dụng Hook ( UseState, UseEffect)
#### Thiết kế giao diện và chức năng
* Đăng ký : Tạo Form đăng ký
* Danh sách : Hiển thị danh sách từ API
* Chỉnh sửa : Chức năng cập nhật thông tin
* Xóa : Cho phép xóa bản ghi
* Giao tiếp API : Dùng Axios(Interceptor) hoặc Fetch API
### 2. HTML
- Cách sử dụng Fetch API của trình duyệt
### 3. Gọi các API & Validation
### 4. Tích hợp Paging,Filter,Sorting
- Paging từ Database (Recommend)
- Paging từ Backend
### 5. Phần Authentication & Authorization :
- Cơ chế sinh Access Token và Refresh Token
- Role
- Policy
- Permission Customize
### 6. Repository vs Unit of Work
### 7. Clean Architure
### 8. Tích hợp Log vào ứng dụng