Dự án này là một ứng dụng web bán sách trực tuyến hiện đại và chuyên nghiệp, được xây dựng bằng công nghệ .NET theo kiến trúc Clean Architecture.
TheBookNook không chỉ là một trang web bán sách, mà là một nền tảng thương mại điện tử hoàn chỉnh. Dự án tập trung vào trải nghiệm người dùng (UX) mượt mà, giao diện (UI) đẹp mắt, và hiệu năng cao. Hệ thống tích hợp đầy đủ các tính năng từ quản lý sản phẩm, giỏ hàng, thanh toán online, cho đến hệ thống quản trị mạnh mẽ.
graph TB
subgraph "Client Layer"
A[Web Browser]
end
subgraph "Application Layer"
B[ASP.NET Core MVC Controllers]
C[TheBookNook.Web]
D[TheBookNook.Application]
end
subgraph "Domain Layer (Core)"
F[TheBookNook.Domain]
end
subgraph "Infrastructure Layer"
E[TheBookNook.Infrastructure]
I[External Services]
end
subgraph "Data Layer"
G[SQL Server]
end
A --> C
C --> D
D --> F
E --> F
C --> E
E --> G
E --> I
TheBookNook/
├── TheBookNook.sln # Solution file
├── README.md # Tài liệu hướng dẫn
├── PHAN_CONG_NHOM.md # Bảng phân công công việc
├── setup-database.bat # Script reset database nhanh
│
├── TheBookNook.Web/ # 🌐 Presentation Layer (MVC)
│ ├── Controllers/
│ │ ├── AccountController.cs # Xử lý đăng nhập, đăng ký, profile
│ │ ├── AdminController.cs # Quản trị sách, đơn hàng
│ │ ├── CartController.cs # Giỏ hàng, thanh toán
│ │ ├── HomeController.cs # Trang chủ
│ │ └── SachesController.cs # Danh sách sách, chi tiết
│ │
│ ├── Views/
│ │ ├── Account/
│ │ │ ├── Login.cshtml # Trang đăng nhập
│ │ │ ├── Register.cshtml # Trang đăng ký
│ │ │ ├── Profile.cshtml # Trang profile
│ │ │ └── OrderDetails.cshtml # Chi tiết đơn hàng
│ │ │
│ │ ├── Admin/
│ │ │ ├── Index.cshtml # Dashboard admin
│ │ │ ├── Orders.cshtml # Quản lý đơn hàng
│ │ │ ├── Saches.cshtml # Danh sách sách
│ │ │ ├── SachesCreate.cshtml # Thêm sách mới
│ │ │ ├── SachesEdit.cshtml # Sửa sách
│ │ │ ├── SachesDetails.cshtml # Chi tiết sách
│ │ │ └── SachesDelete.cshtml # Xóa sách
│ │ │
│ │ ├── Cart/
│ │ │ ├── Index.cshtml # Giỏ hàng
│ │ │ ├── Checkout.cshtml # Thanh toán
│ │ │ ├── OrderConfirmation.cshtml # Xác nhận đơn COD
│ │ │ ├── PaymentSuccess.cshtml # Stripe thành công
│ │ │ ├── PaymentFailed.cshtml # Stripe thất bại
│ │ │ ├── VnPaySuccess.cshtml # VNPay thành công
│ │ │ └── VnPayFailed.cshtml # VNPay thất bại
│ │ │
│ │ ├── Home/
│ │ │ └── Index.cshtml # Trang chủ
│ │ │
│ │ ├── Saches/
│ │ │ ├── Index.cshtml # Danh sách sách
│ │ │ └── Details.cshtml # Chi tiết sách
│ │ │
│ │ ├── Shared/
│ │ │ ├── _Layout.cshtml # Layout chính
│ │ │ ├── _AdminLayout.cshtml # Layout admin
│ │ │ ├── _Layout.cshtml.css # CSS cho layout
│ │ │ ├── _ValidationScriptsPartial.cshtml
│ │ │ └── Error.cshtml # Trang lỗi
│ │ │
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ │
│ ├── wwwroot/
│ │ ├── css/
│ │ │ ├── site.css # CSS chính
│ │ │ ├── cart.css # CSS giỏ hàng
│ │ │ ├── account.css # CSS tài khoản
│ │ │ ├── profile.css # CSS profile
│ │ │ ├── payment.css # CSS thanh toán
│ │ │ ├── hero-banner.css # CSS banner
│ │ │ └── snowfall.css # CSS hiệu ứng tuyết
│ │ │
│ │ ├── js/
│ │ │ └── site.js # JavaScript chính
│ │ │
│ │ ├── images/ # Hình ảnh sách, banner
│ │ └── lib/ # Thư viện (Bootstrap, jQuery)
│ │
│ ├── Extensions/
│ │ └── SessionExtensions.cs # Helper cho Session
│ │
│ ├── Program.cs # Cấu hình DI & Pipeline
│ ├── appsettings.json # Cấu hình hệ thống
│ └── TheBookNook.Web.csproj
│
├── TheBookNook.Application/ # 📦 Application Layer (Business Logic)
│ ├── Services/
│ │ ├── AccountService.cs # Xử lý tài khoản, đăng nhập
│ │ ├── DonHangService.cs # Xử lý đơn hàng
│ │ ├── SachService.cs # Xử lý sách, tìm kiếm, phân trang
│ │ ├── StripePaymentService.cs # Tích hợp Stripe
│ │ └── VnPayService.cs # Tích hợp VNPay
│ │
│ ├── Interfaces/
│ │ ├── IAccountService.cs
│ │ ├── IDonHangService.cs
│ │ └── ISachService.cs
│ │
│ ├── Dtos/
│ │ ├── SachDto.cs # DTO sách
│ │ ├── DonHangDto.cs # DTO đơn hàng
│ │ ├── ChiTietDonHangDto.cs # DTO chi tiết đơn
│ │ ├── NguoiDungDto.cs # DTO người dùng
│ │ ├── CartItemDto.cs # DTO item giỏ hàng
│ │ ├── CartItemSessionDto.cs # DTO session giỏ hàng
│ │ ├── CheckoutDto.cs # DTO thanh toán
│ │ ├── CreateOrderDto.cs # DTO tạo đơn
│ │ ├── CreateOrderItemDto.cs # DTO tạo item đơn
│ │ ├── CreateNguoiDungDto.cs # DTO tạo user
│ │ ├── LoginDto.cs # DTO đăng nhập
│ │ ├── DashboardStatisticsDto.cs # DTO thống kê
│ │ ├── PagedResult.cs # DTO phân trang
│ │ │
│ │ ├── Requests/
│ │ │ ├── AddToCartRequest.cs # Request thêm giỏ hàng
│ │ │ ├── UpdateQuantityRequest.cs # Request cập nhật số lượng
│ │ │ ├── RemoveItemRequest.cs # Request xóa item
│ │ │ └── UpdateOrderStatusRequest.cs # Request cập nhật trạng thái
│ │ │
│ │ └── ViewModels/
│ │ ├── ProfileViewModel.cs # ViewModel profile
│ │ └── ErrorViewModel.cs # ViewModel lỗi
│ │
│ └── TheBookNook.Application.csproj
│
├── TheBookNook.Domain/ # 🏛 Domain Layer (Enterprise Logic)
│ ├── Entities/
│ │ ├── Sach.cs # Entity sách
│ │ ├── DonHang.cs # Entity đơn hàng
│ │ ├── ChiTietDonHang.cs # Entity chi tiết đơn
│ │ ├── NguoiDung.cs # Entity người dùng
│ │ ├── TacGia.cs # Entity tác giả
│ │ └── TheLoai.cs # Entity thể loại
│ │
│ ├── Interfaces/
│ │ ├── IGenericRepository.cs # Interface CRUD chung
│ │ ├── ISachRepository.cs # Interface repo sách
│ │ ├── IDonHangRepository.cs # Interface repo đơn hàng
│ │ ├── INguoiDungRepository.cs # Interface repo user
│ │ └── IUnitOfWork.cs # Interface Unit of Work
│ │
│ └── TheBookNook.Domain.csproj
│
└── TheBookNook.Infrastructure/ # 🔧 Infrastructure Layer (External Concerns)
├── Data/
│ └── ApplicationDbContext.cs # EF Core Context + Seed Data
│
├── Repositories/
│ ├── GenericRepository.cs # Triển khai CRUD chung
│ ├── SachRepository.cs # Triển khai repo sách
│ ├── DonHangRepository.cs # Triển khai repo đơn hàng
│ ├── NguoiDungRepository.cs # Triển khai repo user
│ └── UnitOfWork.cs # Triển khai Unit of Work
│
├── Migrations/ # EF Core Migrations
│
└── TheBookNook.Infrastructure.csproj
- Trải nghiệm mua sắm:
- Xem danh sách sách với bộ lọc theo danh mục và tìm kiếm thông minh.
- Xem chi tiết sách với hình ảnh bìa và thông tin đầy đủ.
- Thêm vào giỏ hàng, cập nhật số lượng, xóa sản phẩm (AJAX mượt mà).
- Thanh toán đa dạng:
- Thanh toán khi nhận hàng (COD).
- Thanh toán online qua thẻ quốc tế (Stripe).
- Thanh toán qua thẻ ATM/QR nội địa (VNPay).
- Tài khoản:
- Đăng ký/Đăng nhập tài khoản cá nhân.
- Đăng nhập nhanh bằng Facebook.
- Theo dõi lịch sử đơn hàng.
- Dashboard: Thống kê tổng quan sách, đơn hàng, doanh thu.
- Quản lý Sách:
- Thêm, Sửa, Xóa sách.
- Upload ảnh bìa sách (Local file system).
- Validate dữ liệu chặt chẽ.
- Quản lý Đơn hàng:
- Xem danh sách đơn hàng.
- Cập nhật trạng thái đơn hàng (xác nhận, đang giao, hoàn thành, hủy...).
- SDK: .NET 9.0
- Database: SQL Server (LocalDB hoặc Express)
- Tools: Visual Studio 2022 hoặc VS Code
git clone <repository-url>
cd duan2Đảm bảo file appsettings.json trong TheBookNook.Web đã có connection string đúng:
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=TheBookNookDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}Bạn có thể chạy script tiện ích có sẵn (Windows):
# Chạy file này để xóa DB cũ, tạo DB mới và seed dữ liệu mẫu
reset-database-final.batHoặc thao tác thủ công bằng lệnh CLI:
cd TheBookNook.Web
dotnet ef database drop --force --context ApplicationDbContext --project ../TheBookNook.Infrastructure
dotnet ef database update --context ApplicationDbContext --project ../TheBookNook.InfrastructureDữ liệu mẫu bao gồm:
- 1 Tài khoản Admin:
admin@admin.com/Admin@123 - Tài khoản User mẫu.
- Danh sách sản phẩm, thể loại, tác giả phong phú.
cd TheBookNook.Web
dotnet runTruy cập: http://localhost:5129
- Backend: ASP.NET Core 9.0, Entity Framework Core 9.
- Frontend: Razor Views, CSS (Modern & Clean), JavaScript (Vanilla).
- Database: SQL Server.
- Payment Gateways: Stripe, VNPay.
- Authentication: ASP.NET Core Identity (Cookie), Facebook OAuth.
Dự án được phát triển bởi nhóm sinh viên đam mê công nghệ. Mọi đóng góp pull request đều được hoan nghênh!