NTUCoder là một hệ thống quản lý và luyện tập lập trình trực tuyến, hướng tới hỗ trợ sinh viên và các lập trình viên rèn luyện kỹ năng giải bài tập lập trình, tham gia các khóa học, bài thi và quản lý tiến trình học tập.
-
Chức năng chính:
- Quản lý khóa học lập trình (Course)
- Quản lý bài tập lập trình (Problem)
- Quản lý tài khoản lập trình viên (Coder)
- Hệ thống khóa học, chủ đề, bài học và danh mục
- Theo dõi tiến trình học tập và thành tích
- Tích hợp hệ thống chấm bài tự động, badge, bảng xếp hạng
- Quản trị vai trò người dùng, quản lý nhãn (badge), bài blog, bình luận...
-
Công nghệ:
NTUCoder/
│
├── api/ # Backend API (ASP.NET Core)
│ ├── Controllers/ # Các controller xử lý HTTP request
│ ├── Infrashtructure/
│ │ ├── Repositories/ # Các repository thao tác dữ liệu (Problem, Coder, Course, ...)
│ │ └── ... # Các thành phần hạ tầng khác
│ ├── Models/ # Định nghĩa các model, entity và DbContext cho EF Core
│ ├── DTOs/ # Các Data Transfer Object (Request, Response)
│ ├── Services/ # Xử lý logic nghiệp vụ
│ ├── Helpers/ # Các lớp tiện ích, helper
│ ├── Middleware/ # Các middleware cho pipeline ASP.NET Core
│ ├── appsettings.json # File cấu hình ứng dụng
│ └── Program.cs, Startup.cs # Điểm khởi tạo ứng dụng
│
├── front-end/ # Frontend ReactJS (Vite)
│ ├── public/ # Tài nguyên tĩnh (favicon, index.html, ...)
│ └── src/
│ ├── assets/ # Ảnh, icon, font, style tĩnh
│ ├── components/ # Các component dùng lại cho toàn app
│ ├── hooks/ # Custom React hooks
│ ├── layouts/ # Các layout dùng chung (MainLayout, AdminLayout, ...)
│ ├── pages/ # Các trang chính (CoursePage, ProblemPage, ...)
│ ├── routes/ # Định nghĩa route cho app
│ ├── services/ # Giao tiếp API, xử lý dữ liệu
│ ├── store/ # Quản lý state (Redux/Zustand, ...)
│ ├── theme/ # Tuỳ chỉnh giao diện ChakraUI, theme
│ └── views/ # Các view (giao diện) phân quyền (admin, user, ...)
│
├── README.md # File hướng dẫn (bạn đang đọc)
└── ... # Các tệp/thư mục khác (LICENSE, .gitignore, ...)
- Cài đặt .NET 7 SDK và SQL Server.
- Clone repo và chuyển vào thư mục
api/ - Cấu hình chuỗi kết nối database trong
appsettings.json - Chạy lệnh:
dotnet ef database update dotnet run
- (Tùy chọn) Thiết lập Minio/Cloud Storage để lưu trữ file.
- Cài Node.js (>=16)
- Chuyển vào thư mục
front-end/ - Chạy lệnh:
npm install npm run dev
- Truy cập giao diện tại
http://localhost:3000
Vite: Công cụ build siêu nhanh cho frontend hiện đại.
ReactJS: Thư viện xây dựng giao diện người dùng.- ChakraUI: Thư viện UI hiện đại, dễ tuỳ biến.
- Đăng ký tài khoản, đăng nhập, khôi phục mật khẩu
- Tìm kiếm, giải, tạo và quản lý bài tập
- Xem bảng xếp hạng, nhận huy hiệu (badge), theo dõi tiến trình học
- Tham gia khóa học, bài thi, xem blog, bình luận
- Phân quyền vai trò: Admin, User, ...
- Quản trị hệ thống (admin dashboard)
Mọi đóng góp xây dựng hoặc báo lỗi xin gửi Pull Request hoặc Issue lên repo.
- Tác giả: nguyenduydan
- Email: Liên hệ qua GitHub
Dự án vẫn đang trong quá trình phát triển.