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

81 lines
3.2 KiB
Markdown

# 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
```bash
composer install
php spark serve # test nhanh tại http://localhost:8080
```
Cấu hình chính trong `.env`:
```dotenv
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:
```bash
# 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:
```bash
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).