Quiz Nhat là một hệ thống học tập tiếng Nhật trực tuyến hoàn chỉnh, bao gồm:
- Frontend: ReactJS với UI hiện đại, responsive
- Backend: Node.js + Express API
- Database: MySQL với schema được thiết kế tối ưu
- Tính năng đầy đủ: Đăng nhập/đăng ký, xem video, làm quiz, theo dõi kết quả
- Node.js (v14 trở lên)
- MySQL (v8 trở lên)
- npm hoặc yarn
git clone <repository-url>
cd quizNhat# Cài đặt tất cả dependencies
npm run install-all
# Hoặc cài đặt từng phần
npm install # Root package
cd backend && npm install # Backend
cd ../frontend && npm install # FrontendCREATE DATABASE quiz_nhat_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;mysql -u root -p quiz_nhat_db < database/init.sqlTạo file .env trong thư mục backend (đã có sẵn):
PORT=5000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=
DB_NAME=quiz_nhat_db
JWT_SECRET=quiz_nhat_secret_key_2024Lưu ý: Cập nhật DB_PASSWORD theo cấu hình MySQL của bạn.
npm run dev# Terminal 1: Backend
npm run server
# Terminal 2: Frontend
npm run client- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Đăng ký tài khoản mới
- Đăng nhập (username/password)
- Quản lý phiên đăng nhập với JWT
- Danh sách khóa học theo cấp độ (N5-N1)
- Xem chi tiết khóa học
- Video bài học tích hợp YouTube
- Lọc khóa học theo cấp độ
- Làm bài kiểm tra trực tuyến
- Đếm ngược thời gian
- Chấm điểm tự động
- Hiển thị kết quả chi tiết
- Lịch sử làm bài
- Thống kê điểm số
- Xem chi tiết từng lần làm bài
- Phân tích kết quả học tập
- users: Thông tin người dùng
- courses: Khóa học
- quizzes: Bài kiểm tra
- questions: Câu hỏi
- quiz_results: Kết quả làm bài
- user_answers: Câu trả lời của người dùng
- user_progress: Tiến độ học tập
- 5 khóa học từ N5 đến N3
- 5 bài quiz với các câu hỏi mẫu
- Câu hỏi về Hiragana, Katakana, từ vựng, ngữ pháp
quizNhat/
├── backend/ # Node.js API
│ ├── server.js # Main server file
│ ├── package.json # Backend dependencies
│ └── .env # Environment variables
├── frontend/ # React app
│ ├── public/ # Static files
│ ├── src/ # Source code
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── contexts/ # React contexts
│ │ └── App.js # Main app component
│ └── package.json # Frontend dependencies
├── database/ # Database files
│ └── init.sql # Database schema & sample data
├── package.json # Root package with scripts
└── README.md # This file
- Đăng ký tài khoản với thông tin cơ bản
- Chọn cấp độ phù hợp (N5-N1)
- Xem video bài học
- Làm quiz để kiểm tra kiến thức
- Theo dõi kết quả và tiến độ học tập
- Username:
demo - Password:
123456
Xem chi tiết tại API Documentation
POST /api/auth/register- Đăng kýPOST /api/auth/login- Đăng nhậpGET /api/courses- Danh sách khóa họcGET /api/courses/:id- Chi tiết khóa họcGET /api/quizzes/:id- Chi tiết quizPOST /api/quizzes/:id/submit- Nộp bàiGET /api/user/results- Kết quả của user
- React 18
- React Router DOM
- Styled Components
- Axios
- React Icons
- Node.js
- Express.js
- MySQL2
- JSON Web Token
- CORS
- MySQL 8
- UTF8MB4 encoding (hỗ trợ tiếng Nhật)
- Upload avatar người dùng
- Hệ thống ranking
- Chat community
- Flashcard học từ vựng
- Luyện nghe với âm thanh
- Xuất báo cáo PDF
- Tích hợp thanh toán
- Mobile app (React Native)
# Kiểm tra MySQL đang chạy
mysql -u root -p
# Tạo lại database
mysql -u root -p -e "DROP DATABASE IF EXISTS quiz_nhat_db; CREATE DATABASE quiz_nhat_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p quiz_nhat_db < database/init.sql# Kill process trên port 3000/5000
npx kill-port 3000
npx kill-port 5000rm -rf node_modules package-lock.json
rm -rf backend/node_modules backend/package-lock.json
rm -rf frontend/node_modules frontend/package-lock.json
npm run install-allDự án đã được audit và cập nhật các packages để giảm thiểu vulnerabilities:
- Trước cập nhật: 9 vulnerabilities (3 moderate, 6 high)
- Sau cập nhật: 3 vulnerabilities (3 moderate, chỉ ảnh hưởng development)
Xem chi tiết tại SECURITY.md
Nếu gặp vấn đề, vui lòng:
- Kiểm tra log trong terminal
- Đảm bảo tất cả dependencies đã được cài đặt
- Kiểm tra kết nối database
- Đọc kỹ error message
MIT License - Tự do sử dụng cho mục đích học tập và thương mại.
Chúc bạn học tiếng Nhật vui vẻ! 🎌 "# quizNhat"