Skip to content

locfaker/Web.Net-clean-architecture.

Repository files navigation

Dự án TheBookNook

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.

Tổng quan

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ẽ.

Sơ đồ cấu trúc dự án (Onion/Clean Architecture)

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
Loading

Cấu trúc thư mục

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

Tính năng nổi bật

🛒 Dành cho Khách hàng

  • 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.

🛠 Dành cho Quản trị viên (Admin Panel)

  • 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...).

Yêu cầu hệ thống

  • SDK: .NET 9.0
  • Database: SQL Server (LocalDB hoặc Express)
  • Tools: Visual Studio 2022 hoặc VS Code

Hướng dẫn cài đặt & Cơ sở dữ liệu

1. Clone dự án

git clone <repository-url>
cd duan2

2. Thiết lập cấu hình

Đả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"
}

3. Khởi tạo Database và Dữ liệu mẫu

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.bat

Hoặ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.Infrastructure

Dữ 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ú.

4. Chạy ứng dụng

cd TheBookNook.Web
dotnet run

Truy cập: http://localhost:5129

Công nghệ sử dụng

  • 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.

Đóng góp

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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published