Hệ thống E-Learning (phiên bản MVP) được xây dựng trên nền tảng .NET 10, Vue 3 và PostgreSQL với kiến trúc sẵn sàng cho môi trường Production.
Đây là phiên bản MVP hoàn chỉnh của hệ thống E-Learning. Các luồng quản trị khóa học, bài học, câu hỏi, học viên, enrollment, học tuần tự, làm bài, tiến độ và dashboard đã được nối end-to-end trên nền tảng Clean Architecture.
- Backend (Server): ASP.NET Core Web API (.NET 10), Entity Framework Core 10, PostgreSQL
- Frontend (Client): Vue 3, TypeScript (Strict Mode), Vite, Vue Router, Pinia, Axios, Tailwind CSS
- Kiểm thử (Testing): xUnit, WebApplicationFactory, Testcontainers PostgreSQL, Vitest, Playwright
- Công cụ (Tooling): npm workspaces, Prettier, ESLint, Husky, GitHub Actions, Dependabot
.
├── docs/ # Tài liệu dự án (Kiến trúc, Đặc tả, Security...)
├── server/ # Mã nguồn Backend (.NET 10 API)
├── client/ # Mã nguồn Frontend (Vue 3 / Vite)
├── e2e/ # Mã nguồn End-to-End Tests (Playwright)
├── .github/ # Cấu hình GitHub Actions CI/CD
├── .husky/ # Git hooks (pre-commit, pre-push)
├── docker-compose.yml # Cấu hình Docker cho môi trường Dev & Production
├── Elearning.sln # File Solution của .NET
└── package.json # File quản lý package NPM Workspace
Để chạy dự án, máy tính của bạn cần cài đặt:
- .NET SDK 10.x
- Node.js 22+
- npm 10+
- Docker & Docker Compose
- Git
Chạy các lệnh sau trong Terminal để khởi tạo môi trường:
cp .env.example .env
npm ci
dotnet tool restore
dotnet restore Elearning.slnLưu ý: Công cụ
dotnet-efđã được tích hợp sẵn ở cấp độ dự án (local tool), không cần cài đặt toàn cục (global). File.envgốc được sử dụng riêng cho Docker Compose. Đối với frontend, Vite đã cấu hình sẵn các giá trị mặc định, chỉ tạo fileclient/.env.localkhi cần ghi đè các cấu hình này.
Khởi động Database (PostgreSQL):
docker compose up -d postgresKhởi động Backend (ASP.NET Core):
dotnet run --project server/src/Elearning.Api/Elearning.Api.csprojKhởi động Frontend (Vue 3):
npm run dev:clientCác đường dẫn mặc định:
- Giao diện Client:
http://localhost:5173 - Swagger API Docs:
http://localhost:8080/swagger - API Endpoint gốc:
http://localhost:8080 - Check Health:
http://localhost:8080/api/health
Nếu muốn chạy toàn bộ ứng dụng bằng Docker (không cần cài Node/SDK):
docker compose up --buildSau đó truy cập:
- Frontend:
http://localhost:5173 - Backend Health:
http://localhost:5173/api/health(thông qua Reverse Proxy của Nginx)
Ở môi trường Development, backend tự chạy migration và tạo dữ liệu demo idempotent:
- Admin:
admin@elearning.local/MindX@1234 - Student:
student@elearning.local/Student@1234 - Khóa học
Python Basicgồm 5 bài, mỗi bài 3 câu hỏi
Demo seed không chạy ở Production.
Dự án sử dụng Husky để tự động kiểm tra code trước khi commit và push. Bạn có thể tự chạy thủ công:
Kiểm tra Frontend:
npm run format:check
npm run verify:client
npm run test:e2eKiểm tra Backend:
dotnet restore Elearning.sln
dotnet format Elearning.sln --verify-no-changes --no-restore
dotnet build Elearning.sln -c Release --no-restore
dotnet test Elearning.sln -c Release --no-buildĐể chạy toàn bộ luồng kiểm tra (Full Verification) (Yêu cầu cài đặt sẵn .NET):
npm run verifyHãy bắt đầu đọc từ các tài liệu sau để nắm rõ dự án:
docs/PROJECT_SPEC.md— Đặc tả yêu cầu sản phẩm MVPdocs/ARCHITECTURE.md— Kiến trúc tổng thể hệ thốngdocs/SECURITY.md— Bảo mật và Quản lý luồng Authdocs/DATABASE.md— Thiết kế cơ sở dữ liệudocs/API_CONTRACT.md— Tiêu chuẩn thiết kế APIdocs/TESTING_AND_DOD.md— Chiến lược kiểm thử & Definition of Donedocs/HANDOVER.md— Hướng dẫn bàn giao code
Dự án đã hoàn thiện bộ khung kỹ thuật, xác thực/phân quyền và toàn bộ nghiệp vụ MVP: Dashboard, Course, Lesson, Exercise, Student, Enrollment, Learning Path và Progress. Backend có migration/seed Development, frontend có đầy đủ route theo đặc tả, và các luồng chính được bao phủ bởi unit, integration và Playwright E2E tests.