Mục tiêu: Thực hành tổng hợp tất cả kiến thức đã học từ các khóa:
- C# OOP (7 modules)
- Introduction to Relational Databases (IBM - 4 modules)
- Dr. Chuck's PostgreSQL (4 modules)
- Web Application Development with ASP.NET Core (4 modules)
| # | Project | Độ khó | Mô tả ngắn |
|---|---|---|---|
| 1 | TaskFlow — Personal Task Manager | ⭐ Beginner | Quản lý công việc cá nhân |
| 2 | BookHive — Book Review Platform | ⭐⭐ Intermediate | Nền tảng review sách |
| 3 | ShopCore — Mini E-Commerce | ⭐⭐⭐ Advanced | Cửa hàng trực tuyến mini |
| Kỹ năng | Project 1 | Project 2 | Project 3 |
|---|---|---|---|
| C# Classes & OOP | ✅ | ✅ | ✅ |
| Inheritance / Polymorphism | 🔸 cơ bản | ✅ | ✅ nâng cao |
| Interfaces / Abstract Classes | ❌ | ✅ | ✅ |
| Collections & LINQ | ✅ cơ bản | ✅ nâng cao | ✅ nâng cao |
| Exception Handling | 🔸 | ✅ | ✅ |
| SQL CRUD | ✅ (qua EF) | ✅ | ✅ |
| Relationships (1:N) | ✅ | ✅ | ✅ |
| Relationships (M:N) | ❌ | ✅ | ✅ |
| JOINs / GROUP BY | 🔸 | ✅ | ✅ |
| Normalization / Constraints | 🔸 | ✅ | ✅ |
| MVC Pattern | ✅ | ✅ | ✅ |
| Razor Views | ✅ | ✅ | ✅ |
| Web API (REST) | ❌ | ✅ | ✅ |
| EF Core (ORM) | ✅ | ✅ | ✅ |
| Migrations | ✅ | ✅ | ✅ |
| Model Binding / Validation | ✅ | ✅ | ✅ |
| Identity (Register/Login) | ✅ | ✅ | ✅ |
| JWT Authentication | ❌ | ❌ | ✅ |
| Role-based Authorization | 🔸 | ✅ | ✅ |
| Claims/Policy Authorization | ❌ | 🔸 | ✅ |
| AJAX | 🔸 | ✅ | ✅ |
| Pagination / Filtering | ❌ | ✅ | ✅ |
| Repository Pattern | ❌ | ✅ | ✅ |
| Data Seeding | ✅ | ✅ | ✅ |
| Security (CSRF, XSS) | 🔸 | ✅ | ✅ |
| Caching | ❌ | ❌ | ✅ |
| Logging / Auditing | ❌ | 🔸 | ✅ |
| Data Encryption | ❌ | ❌ | ✅ |
✅ = đầy đủ 🔸 = cơ bản ❌ = không có trong project này
Ứng dụng quản lý công việc cá nhân (Todo App). Người dùng có thể đăng ký tài khoản, đăng nhập, tạo/sửa/xóa tasks, phân loại tasks theo categories, và đánh dấu hoàn thành.
- Authentication: Đăng ký, đăng nhập, đăng xuất (Identity Framework)
- Task CRUD: Tạo, xem, sửa, xóa task
- Categories: Phân loại tasks (Work, Personal, Study, etc.)
- Status: Đánh dấu task Pending / In Progress / Completed
- Priority: Gán mức ưu tiên (Low, Medium, High)
- Due Date: Đặt deadline cho task
- My Tasks: Mỗi user chỉ thấy tasks của mình
- Dashboard: Trang chủ hiển thị tổng quan tasks
┌──────────────┐ ┌──────────────┐
│ AspNetUsers │ │ Categories │
│ (Identity) │ ├──────────────┤
│ │ │ Id (PK) │
│ Id │ │ Name │
│ Email │ │ Color │
│ UserName │ └──────┬───────┘
└──────┬───────┘ │
│ │
│ 1:N │ 1:N
│ │
┌──────┴──────────────────────┴───────┐
│ TodoItems │
├─────────────────────────────────────┤
│ Id (PK) │
│ Title │
│ Description │
│ DueDate │
│ Priority (enum: Low/Medium/High) │
│ Status (enum: Pending/InProgress/ │
│ Completed) │
│ CreatedAt │
│ UserId (FK → AspNetUsers) │
│ CategoryId (FK → Categories) │
└─────────────────────────────────────┘
project-1-taskflow/
├── Controllers/
│ ├── HomeController.cs
│ └── TodoController.cs
├── Models/
│ ├── TodoItem.cs
│ ├── Category.cs
│ └── Enums.cs
├── Data/
│ └── ApplicationDbContext.cs
├── Views/
│ ├── Home/
│ ├── Todo/
│ └── Shared/
├── wwwroot/css/
├── Program.cs
└── appsettings.json
- Bắt đầu từ Model → DbContext → Migration → Controller → View
- Không cần tối ưu ngay, viết code đơn giản nhất có thể
- Sau khi hoàn thành, tự review lại xem đâu có thể cải thiện
Nền tảng review sách cho phép users duyệt danh sách sách, viết đánh giá (review), đánh điểm (rating), và admin quản lý sách/tác giả. Có cả MVC frontend lẫn Web API endpoints.
-
Authentication & Roles:
- 3 roles: Admin, Reviewer, Reader
- Admin: quản lý sách, tác giả, categories
- Reviewer: viết reviews, rating
- Reader: chỉ xem
-
Book Management (Admin):
- CRUD sách (title, description, ISBN, cover image, publish date)
- Gán tác giả, categories cho sách
- Data seeding: 20+ sách mẫu
-
Author Management (Admin):
- CRUD tác giả (name, bio, nationality)
- Quan hệ M:N: một tác giả → nhiều sách, một sách → nhiều tác giả
-
Categories:
- Quan hệ M:N: sách ↔ thể loại (Fiction, Sci-Fi, Programming, etc.)
-
Reviews & Ratings (Reviewer):
- Viết review cho sách (text + rating 1-5 sao)
- Mỗi reviewer chỉ review 1 lần/sách
- Hiển thị average rating
-
Search & Filter:
- Tìm kiếm sách theo title, author
- Filter theo category, rating
- Pagination (10 sách/trang)
-
Web API:
/api/books— GET, POST, PUT, DELETE/api/books/{id}/reviews— GET, POST- Swagger documentation
-
AJAX:
- Load reviews bằng AJAX (không reload page)
- Submit review form bằng AJAX
Users ──1:N──▶ Reviews
Books ──1:N──▶ Reviews
Books ◀──M:N──▶ Authors (qua BookAuthors junction table)
Books ◀──M:N──▶ Categories (qua BookCategories junction table)
- Dùng Repository Pattern + Service Layer
- Implement IBookRepository, IReviewRepository interfaces
- Dùng AutoMapper để map Entity ↔ DTO
- Thực hành LINQ nâng cao: GroupBy, Join, Aggregation
Cửa hàng trực tuyến mini với đầy đủ chức năng: browse sản phẩm, giỏ hàng, đặt hàng, quản lý đơn hàng (admin), và bảo mật nâng cao. Đây là project tổng hợp cao nhất.
-
Dual Authentication:
- MVC: Identity (cookie-based) cho web frontend
- API: JWT token cho mobile/SPA clients
-
Product Management (Admin):
- CRUD products (name, description, price, stock, images)
- Categories (hierarchical: Electronics → Phones → iPhone)
- Product variants (size, color)
-
Shopping Cart:
- Thêm/xóa/cập nhật số lượng
- Persistent cart (database-backed cho logged-in users)
- Session-based cart cho guests
-
Order Management:
- Checkout flow: Cart → Shipping Info → Review → Place Order
- Order status tracking (Pending → Processing → Shipped → Delivered)
- Order history cho users
- Admin: quản lý tất cả orders
-
Reviews & Ratings:
- Chỉ users đã mua mới được review
- Rating 1-5 sao + text review
-
Admin Dashboard:
- Thống kê: total orders, revenue, top products
- Charts (dùng Chart.js)
- User management
-
Security Nâng cao:
- Data encryption cho sensitive fields (email, address)
- Auditing: log mọi data changes
- Security headers (CSP, HSTS, X-Content-Type-Options)
- Rate limiting cho API endpoints
- Anti-CSRF tokens
-
Performance:
- Caching (memory cache cho product catalog)
- Eager loading (Include) cho related data
- Pagination cho tất cả danh sách
- AsNoTracking cho read-only queries
-
External Auth (tùy chọn):
- Google login
Users ──1:N──▶ Orders ──1:N──▶ OrderItems ◀──N:1── Products
Users ──1:N──▶ Reviews ◀──N:1── Products
Users ──1:N──▶ CartItems ◀──N:1── Products
Products ◀──M:N──▶ Categories (qua ProductCategories)
Products ──1:N──▶ ProductVariants
- Áp dụng Clean Architecture (Presentation → Application → Domain → Infrastructure)
- Repository + Unit of Work pattern
- Custom middleware cho logging, security headers
- EF Core Interceptors cho auditing
- Value Converters cho encryption
Project 1 (2-3 ngày) → Project 2 (5-7 ngày) → Project 3 (7-14 ngày)
⭐ Beginner ⭐⭐ Intermediate ⭐⭐⭐ Advanced
💡 Mẹo: Hoàn thành Project 1 trước, tự review code, nhận ra điểm yếu → Áp dụng cải thiện vào Project 2 → Project 3 là "bản hoàn chỉnh" nhất.
Mục tiêu: Thực hành tổng hợp tất cả kiến thức đã học từ các khóa:
- C# OOP (7 modules)
- Introduction to Relational Databases (IBM - 4 modules)
- Dr. Chuck's PostgreSQL (4 modules)
- Web Application Development with ASP.NET Core (4 modules)
| # | Project | Độ khó | Mô tả ngắn |
|---|---|---|---|
| 1 | TaskFlow — Personal Task Manager | ⭐ Beginner | Quản lý công việc cá nhân |
| 2 | BookHive — Book Review Platform | ⭐⭐ Intermediate | Nền tảng review sách |
| 3 | ShopCore — Mini E-Commerce | ⭐⭐⭐ Advanced | Cửa hàng trực tuyến mini |
| Kỹ năng | Project 1 | Project 2 | Project 3 |
|---|---|---|---|
| C# Classes & OOP | ✅ | ✅ | ✅ |
| Inheritance / Polymorphism | 🔸 cơ bản | ✅ | ✅ nâng cao |
| Interfaces / Abstract Classes | ❌ | ✅ | ✅ |
| Collections & LINQ | ✅ cơ bản | ✅ nâng cao | ✅ nâng cao |
| Exception Handling | 🔸 | ✅ | ✅ |
| SQL CRUD | ✅ (qua EF) | ✅ | ✅ |
| Relationships (1:N) | ✅ | ✅ | ✅ |
| Relationships (M:N) | ❌ | ✅ | ✅ |
| JOINs / GROUP BY | 🔸 | ✅ | ✅ |
| Normalization / Constraints | 🔸 | ✅ | ✅ |
| MVC Pattern | ✅ | ✅ | ✅ |
| Razor Views | ✅ | ✅ | ✅ |
| Web API (REST) | ❌ | ✅ | ✅ |
| EF Core (ORM) | ✅ | ✅ | ✅ |
| Migrations | ✅ | ✅ | ✅ |
| Model Binding / Validation | ✅ | ✅ | ✅ |
| Identity (Register/Login) | ✅ | ✅ | ✅ |
| JWT Authentication | ❌ | ❌ | ✅ |
| Role-based Authorization | 🔸 | ✅ | ✅ |
| Claims/Policy Authorization | ❌ | 🔸 | ✅ |
| AJAX | 🔸 | ✅ | ✅ |
| Pagination / Filtering | ❌ | ✅ | ✅ |
| Repository Pattern | ❌ | ✅ | ✅ |
| Data Seeding | ✅ | ✅ | ✅ |
| Security (CSRF, XSS) | 🔸 | ✅ | ✅ |
| Caching | ❌ | ❌ | ✅ |
| Logging / Auditing | ❌ | 🔸 | ✅ |
| Data Encryption | ❌ | ❌ | ✅ |
✅ = đầy đủ 🔸 = cơ bản ❌ = không có trong project này
Ứng dụng quản lý công việc cá nhân (Todo App). Người dùng có thể đăng ký tài khoản, đăng nhập, tạo/sửa/xóa tasks, phân loại tasks theo categories, và đánh dấu hoàn thành.
- Authentication: Đăng ký, đăng nhập, đăng xuất (Identity Framework)
- Task CRUD: Tạo, xem, sửa, xóa task
- Categories: Phân loại tasks (Work, Personal, Study, etc.)
- Status: Đánh dấu task Pending / In Progress / Completed
- Priority: Gán mức ưu tiên (Low, Medium, High)
- Due Date: Đặt deadline cho task
- My Tasks: Mỗi user chỉ thấy tasks của mình
- Dashboard: Trang chủ hiển thị tổng quan tasks
┌──────────────┐ ┌──────────────┐
│ AspNetUsers │ │ Categories │
│ (Identity) │ ├──────────────┤
│ │ │ Id (PK) │
│ Id │ │ Name │
│ Email │ │ Color │
│ UserName │ └──────┬───────┘
└──────┬───────┘ │
│ │
│ 1:N │ 1:N
│ │
┌──────┴──────────────────────┴───────┐
│ TodoItems │
├─────────────────────────────────────┤
│ Id (PK) │
│ Title │
│ Description │
│ DueDate │
│ Priority (enum: Low/Medium/High) │
│ Status (enum: Pending/InProgress/ │
│ Completed) │
│ CreatedAt │
│ UserId (FK → AspNetUsers) │
│ CategoryId (FK → Categories) │
└─────────────────────────────────────┘
project-1-taskflow/
├── Controllers/
│ ├── HomeController.cs
│ └── TodoController.cs
├── Models/
│ ├── TodoItem.cs
│ ├── Category.cs
│ └── Enums.cs
├── Data/
│ └── ApplicationDbContext.cs
├── Views/
│ ├── Home/
│ ├── Todo/
│ └── Shared/
├── wwwroot/css/
├── Program.cs
└── appsettings.json
- Bắt đầu từ Model → DbContext → Migration → Controller → View
- Không cần tối ưu ngay, viết code đơn giản nhất có thể
- Sau khi hoàn thành, tự review lại xem đâu có thể cải thiện
Nền tảng review sách cho phép users duyệt danh sách sách, viết đánh giá (review), đánh điểm (rating), và admin quản lý sách/tác giả. Có cả MVC frontend lẫn Web API endpoints.
-
Authentication & Roles:
- 3 roles: Admin, Reviewer, Reader
- Admin: quản lý sách, tác giả, categories
- Reviewer: viết reviews, rating
- Reader: chỉ xem
-
Book Management (Admin):
- CRUD sách (title, description, ISBN, cover image, publish date)
- Gán tác giả, categories cho sách
- Data seeding: 20+ sách mẫu
-
Author Management (Admin):
- CRUD tác giả (name, bio, nationality)
- Quan hệ M:N: một tác giả → nhiều sách, một sách → nhiều tác giả
-
Categories:
- Quan hệ M:N: sách ↔ thể loại (Fiction, Sci-Fi, Programming, etc.)
-
Reviews & Ratings (Reviewer):
- Viết review cho sách (text + rating 1-5 sao)
- Mỗi reviewer chỉ review 1 lần/sách
- Hiển thị average rating
-
Search & Filter:
- Tìm kiếm sách theo title, author
- Filter theo category, rating
- Pagination (10 sách/trang)
-
Web API:
/api/books— GET, POST, PUT, DELETE/api/books/{id}/reviews— GET, POST- Swagger documentation
-
AJAX:
- Load reviews bằng AJAX (không reload page)
- Submit review form bằng AJAX
Users ──1:N──▶ Reviews
Books ──1:N──▶ Reviews
Books ◀──M:N──▶ Authors (qua BookAuthors junction table)
Books ◀──M:N──▶ Categories (qua BookCategories junction table)
- Dùng Repository Pattern + Service Layer
- Implement IBookRepository, IReviewRepository interfaces
- Dùng AutoMapper để map Entity ↔ DTO
- Thực hành LINQ nâng cao: GroupBy, Join, Aggregation
Cửa hàng trực tuyến mini với đầy đủ chức năng: browse sản phẩm, giỏ hàng, đặt hàng, quản lý đơn hàng (admin), và bảo mật nâng cao. Đây là project tổng hợp cao nhất.
-
Dual Authentication:
- MVC: Identity (cookie-based) cho web frontend
- API: JWT token cho mobile/SPA clients
-
Product Management (Admin):
- CRUD products (name, description, price, stock, images)
- Categories (hierarchical: Electronics → Phones → iPhone)
- Product variants (size, color)
-
Shopping Cart:
- Thêm/xóa/cập nhật số lượng
- Persistent cart (database-backed cho logged-in users)
- Session-based cart cho guests
-
Order Management:
- Checkout flow: Cart → Shipping Info → Review → Place Order
- Order status tracking (Pending → Processing → Shipped → Delivered)
- Order history cho users
- Admin: quản lý tất cả orders
-
Reviews & Ratings:
- Chỉ users đã mua mới được review
- Rating 1-5 sao + text review
-
Admin Dashboard:
- Thống kê: total orders, revenue, top products
- Charts (dùng Chart.js)
- User management
-
Security Nâng cao:
- Data encryption cho sensitive fields (email, address)
- Auditing: log mọi data changes
- Security headers (CSP, HSTS, X-Content-Type-Options)
- Rate limiting cho API endpoints
- Anti-CSRF tokens
-
Performance:
- Caching (memory cache cho product catalog)
- Eager loading (Include) cho related data
- Pagination cho tất cả danh sách
- AsNoTracking cho read-only queries
-
External Auth (tùy chọn):
- Google login
Users ──1:N──▶ Orders ──1:N──▶ OrderItems ◀──N:1── Products
Users ──1:N──▶ Reviews ◀──N:1── Products
Users ──1:N──▶ CartItems ◀──N:1── Products
Products ◀──M:N──▶ Categories (qua ProductCategories)
Products ──1:N──▶ ProductVariants
- Áp dụng Clean Architecture (Presentation → Application → Domain → Infrastructure)
- Repository + Unit of Work pattern
- Custom middleware cho logging, security headers
- EF Core Interceptors cho auditing
- Value Converters cho encryption
Project 1 (2-3 ngày) → Project 2 (5-7 ngày) → Project 3 (7-14 ngày)
⭐ Beginner ⭐⭐ Intermediate ⭐⭐⭐ Advanced
💡 Mẹo: Hoàn thành Project 1 trước, tự review code, nhận ra điểm yếu → Áp dụng cải thiện vào Project 2 → Project 3 là "bản hoàn chỉnh" nhất.