Sơ đồ website LMS — xem nhanh toàn bộ hệ thống

Đọc từ trên xuống: người dùng vào từ trang công khai → đăng nhập/kích hoạt → học trong khóa → admin quản lý. Mũi tên là luồng đi, không phải menu thật.

1. Vùng công khai (không cần đăng nhập — đây là vùng làm SEO)

Trang chủ / (SEO) — giới thiệu, danh sách khóa theo khối × kỳ thi, cách học 4 bước, câu hỏi thường gặp, nút Đăng nhập / Kích hoạt. meta + JSON-LDsitemap.xml
↓
Trang giới thiệu từng khóa /khoa-hoc/<slug>.html — ví dụ TIMO Khối 4: mô tả khóa, danh sách chương, số bài, số đề, FAQ riêng từng khóa. 1 khóa = 1 trang công khai
↓
Đăng nhập / Kích hoạt — mã học sinh + mật khẩu · Kích hoạt lần đầu bằng mã 8 ký tự do admin cấp.

2. Vùng học sinh (cần đăng nhập — nội dung sau đăng nhập KHÔNG lên SEO)

Khóa học của tôi — danh sách khóa theo khối và kỳ thi. Mỗi khóa = 1 kỳ thi × 1 khối (vd: TIMO-K4, HKIMO-K4, TIMO-K5).
↓
Tab Bài học
Panel trái: video / tài liệu
Panel phải: Chương → Chủ đề → Bài
Nút: Đã học xong · Luyện tập
Tab Luyện tập (theo chủ đề)
Câu hỏi từng chủ đề, nhập đáp án, nộp → chấm ở server → điểm lưu theo chủ đề
Tab Đề thi
Nhóm đề theo kỳ thi (TIMO / IKMC / HKIMO / SASMO…), đếm ngược, nộp → điểm lưu theo đề
Tab Tài liệu
Nhóm: Tài liệu học tập · Bài tập về nhà · Đáp án · Đề thi · Bài tập bổ trợ
Tab Lộ trình & Tiến độ — lộ trình tự sinh theo thứ tự bài (todo → doing → done) · Bài đã xong / tổng bài · Điểm cao nhất từng chủ đề · Chủ đề yếu (< 60%) · Lịch sử đề thi.

3. Vùng admin (chỉ role admin)

Đã có trong khung: Tạo tài khoản cho con + lấy mã kích hoạt · Xem danh sách học sinh · Nhập câu hỏi hàng loạt bằng JSON.
Chưa có giao diện trong khung (thêm bằng D1/SQL hoặc phase 2): Tạo/sửa khóa, chương, chủ đề, bài, đề thi trên web. Hiện tại thêm khóa mới bằng cách thêm dòng vào bảng courses/chapters/topics/lessons (xem SO_DO_WEBSITE.md) — không cần sửa code.

4. Dữ liệu chạy phía sau (Cloudflare free)

Pages (giao diện tĩnh + PWA) → Pages Functions (API) → D1 (tài khoản, kích hoạt, tiến độ, điểm, lộ trình, câu hỏi, đề thi) · Drive (video, MVP) / R2 sau này (file, không phải database).

5. Mở rộng như thế nào? (không sửa code)

Thêm 1 khối mới (vd: lên Lớp 5): thêm 1 dòng courses (exam + grade mới) + chương/chủ đề/bài của khối đó.

Thêm 1 kỳ thi mới (vd: HKIMO Khối 4): thêm 1 dòng courses mới, dùng chung chủ đề của khối 4 — hoặc thêm 1 nhóm đề mới vào tab Đề thi của khóa khối 4 sẵn có.

Thêm 1 chủ đề / bài / đề: thêm dòng topics/lessons/exams. Lộ trình của học sinh tự sinh lại khi vào khóa.

Quy tắc đặt tên khóa để không loạn: <ky-thi>-k<khoi> — vd: timo-k4, hkimo-k4, timo-k5. Slug này cũng là đường dẫn trang giới thiệu công khai.

← Xem mockup giao diện · ← Về trang app