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ệ
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.env→mongo.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)
-
Copy (hoặc symlink) project vào thư mục
data/wwwcủa Devilbox:# ví dụ devilbox ở ~/devilbox ln -s /root/sachgiaokhoaorg ~/devilbox/data/www/sachgiaokhoaorg -
Trong
.envgiữ:app.baseURL = 'http://sachgiaokhoaorg.local/' -
Thêm vào file hosts trên máy PC:
127.0.0.1 sachgiaokhoaorg.local -
Vào container PHP của devilbox, đảm bảo extension
mongodb+gdđược bật, rồi:cd /shared/httpd/sachgiaokhoaorg composer install -
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, đổimongo.uritrong.envvề 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).