Kho dữ liệu học tập hoạt động theo mô hình static data server.
- Nhánh
maindùng để lưu trữ dữ liệu gốc. - CI/CD sẽ build dữ liệu và deploy sang nhánh
publicđể phục vụ GitHub Pages.
data/
<Faculty>/
<Course>/
info.json
thumbnail.jpg | png | webp | jpeg
[docs]/
<doc-slug>/
info.json
content.md | content.pdf
...attachments
[exams]/
<exam-slug>/
info.json
content.md | content.pdf
...attachments
[qa]/
c1.json
# hoặc
<qa-slug>/
info.json
content.md | content.pdf
...attachments
_ (ví dụ data/_example) sẽ bị bỏ qua khi build.
Mỗi môn học bắt buộc phải có:
info.jsontại thư mục gốc của môn- 1 ảnh thumbnail tại gốc môn:
thumbnail.jpg
thumbnail.png
thumbnail.webp
thumbnail.jpeg
Hai thư mục này chứa các thư mục con, mỗi item phải có:
-
info.json -
1 file nội dung duy nhất:
content.mdhoặccontent.pdf
Ngoài ra có thể thêm:
- hình ảnh
- file đính kèm
- dữ liệu bổ sung
Ví dụ:
docs/
lecture-1/
info.json
content.md
slides.pdf
Hỗ trợ 2 dạng dữ liệu.
Dùng cho bộ câu hỏi trắc nghiệm.
qa/
c1.json
c2.json
Cấu trúc giống docs và exams.
qa/
bai-tap-1/
info.json
content.md
Chạy:
npm run build
Sẽ sinh thư mục:
.dist/
Bao gồm:
| File | Mô tả |
|---|---|
main.json |
Danh sách toàn bộ môn học |
courses/<Course>.json |
Metadata chi tiết của từng môn |
stats.json |
Thống kê tổng hợp dữ liệu |
search-index.json |
Catalog phục vụ tìm kiếm |
search/ |
Index tìm kiếm full-text đã build |
last_update.json |
Timestamp + epoch để cache invalidation |
data/ |
Bản copy dữ liệu gốc (bỏ qua thư mục _) |
| Script | Mô tả |
|---|---|
npm run lint |
Kiểm tra và validate format dữ liệu |
npm run build |
Build dữ liệu ra .dist |
npm run check |
Chạy lint + build (dùng cho CI/CD) |
npm run dev |
Alias của build để chạy local |
File workflow:
.github/workflows/pr-check.yml
Khi mở Pull Request sẽ:
- Validate PR template checkbox
- Chạy
npm run lint
- Chạy
npm run build
- Kiểm tra các file output bắt buộc:
main.jsoncourses/data/stats.jsonsearch-index.jsonlast_update.json
File workflow:
.github/workflows/deploy.yml
Trigger khi:
push -> main
Pipeline:
- Chạy
npm run check
- Deploy nội dung
.distsang nhánhpublic
Nhánh public được dùng để serve GitHub Pages.
Khi tạo môn học mới, có thể tham khảo cấu trúc mẫu tại:
data/_ExamMajor/Example
Hướng dẫn đóng góp chi tiết nằm tại:
CONTRIBUTING.md