Files
sachgiaokhoaorg e6b265db99 Sách Giáo Khoa Việt Nam - sachgiaokhoa.org
CodeIgniter 4 website:
- Catalog 999 SGK (lớp 1-12) từ API, lọc theo lớp/môn/NXB, tìm kiếm
- Trang chủ grouped browse (bậc học -> lớp -> môn, ưu tiên môn quan trọng)
- Chi tiết sách: metadata đầy đủ, cover nghệ thuật /thumb/{W}x{H}/
- Đọc online qua gate captcha + countdown, PDF viewer pdf.js
- Download: captcha + token một lần + auto cache-bust version
- Tự đồng bộ catalog/cover khi API thay đổi (refresh:catalog)
- Legal: DMCA, miễn trừ trách nhiệm, điều khoản, bảo mật, liên hệ
2026-08-23 07:05:49 +00:00

3.2 KiB

Sách Giáo Khoa Việt Nam — sachgiaokhoa.org

Website tra cứu sách giáo khoa Việt Nam (lớp 1 → 12) xây dựng bằng CodeIgniter 4.

Tính năng

  • Kho sách: ~1081 đầu sách từ API nguồn, lọc theo lớp / môn học / nhà xuất bản + tìm kiếm, phân trang
  • Trang chi tiết: đầy đủ metadata (tác giả, chủ biên, NXB, số trang, dung lượng, ISBN, giá, phiên bản PDF, ngày tạo)
  • Xem trực tuyến: trình xem PDF (pdf.js) nhúng, stream qua proxy /media/pdf/{id} (chế độ inline, không tải)
  • Tải xuống có kiểm soát: trang /tai-xuong/{id} với captcha (GD tự vẽ) + đếm ngược 15s + token một lần hết hạn 5 phút
  • Pháp lý: Miễn trừ trách nhiệm, Điều khoản sử dụng, Chính sách bảo mật, Bản quyền & DMCA, Liên hệ/Báo cáo vi phạm (honeypot chống spam)
  • MongoDB (mongo-harness): cache danh mục sách (TTL 6h), token tải về, thống kê lượt tải, tin nhắn liên hệ

Yêu cầu

  • PHP >= 8.1 với các extension: mongodb, gd, curl, intl
  • MongoDB tại harness-mongo:27017 (cấu hình trong .envmongo.uri)
  • Composer

Cài đặt

composer install
php spark serve    # test nhanh tại http://localhost:8080

Cấu hình chính trong .env:

api.baseUrl / api.token   # API sách nguồn (kèm Bearer token)
mongo.uri / mongo.db      # MongoDB cache
download.countdown        # số giây đếm ngược trước khi cho tải

Chạy local với Devilbox (sachgiaokhoaorg.local)

  1. Copy (hoặc symlink) project vào thư mục data/www của Devilbox:

    # ví dụ devilbox ở ~/devilbox
    ln -s /root/sachgiaokhoaorg ~/devilbox/data/www/sachgiaokhoaorg
    
  2. Trong .env giữ: app.baseURL = 'http://sachgiaokhoaorg.local/'

  3. Thêm vào file hosts trên máy PC:

    127.0.0.1  sachgiaokhoaorg.local
    
  4. Vào container PHP của devilbox, đảm bảo extension mongodb + gd được bật, rồi:

    cd /shared/httpd/sachgiaokhoaorg
    composer install
    
  5. Mở http://sachgiaokhoaorg.local — document root trỏ vào public/.

Lưu ý MongoDB: site connect tới harness-mongo:27017. Khi chạy trên PC cá nhân, đổi mongo.uri trong .env về MongoDB local của devilbox (mongodb://mongo:mongo@mongo:27017) hoặc Mongo Atlas.

Cấu trúc chính

app/
  Controllers/Books.php      # danh sách + chi tiết + viewer
  Controllers/Media.php      # proxy cover & pdf (inline)
  Controllers/Download.php   # captcha + countdown + token download
  Controllers/Pages.php      # trang tĩnh + contact
  Libraries/BookApi.php      # client API nguồn + MongoDB cache
  Libraries/Mongo.php        # connection mongo-harness
  Libraries/Captcha.php      # captcha GD tự vẽ
  Views/                     # layout + views (tiếng Việt)
public/assets/pdfjs/         # pdf.js 3.11.174 (self-hosted)

Pháp lý

Website phi thương mại, chỉ nhúng/liên kết nội dung từ API nguồn phục vụ tra cứu. Mọi bản quyền sách thuộc về các Nhà xuất bản & Bộ GD-ĐT. Báo cáo vi phạm: /lien-he → gỡ trong 72h (DMCA).