Bắt đầu nhanh¶
Từ con số không đến một cổng chứng chỉ đang chạy chỉ trong năm phút.
Yêu cầu¶
- Python 3.11 trở lên.
- Một file PDF template, mỗi trang tương ứng một biến thể (môn, kết quả). Hoặc dùng ví dụ
demo-academycó sẵn, nó tự dựng template khi chạy. - Một font TrueType cho mỗi kiểu chữ bạn muốn (ví dụ một font serif, một font script).
1. Cài đặt¶
Khi packages đã có trên PyPI:
Khi chưa có trên PyPI (cài từ mã nguồn, nên dùng khi bản v1.0.0 chưa được phát hành):
git clone https://github.com/Kein95/luonvuituoi-cert
cd luonvuituoi-cert
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ./packages/core -e ./packages/cli
Cả hai cách đều cung cấp lệnh lvt-cert. CLI phụ thuộc vào engine (luonvuitoi-cert) và engine này được cài kèm tự động.
2. Scaffold project¶
Trả lời các câu hỏi (tên, slug, locale) hoặc dùng --non-interactive kèm --name/--slug/--locale để bỏ qua. Trình tạo khung sẽ sinh ra:
my-portal/
├── cert.config.json # điền rounds / subjects / layout
├── vercel.json
├── requirements.txt
├── .env.example
├── .gitignore
├── README.md
└── (templates/, assets/fonts/, data/ : bạn tự điền)
3. Cấu hình biến môi trường¶
Chỉnh .env và set ít nhất:
JWT_SECRET: chuỗi ngẫu nhiên từ 32 ký tự trở lên. Server từ chối cấp admin token nếu thiếu biến này.ADMIN_DEFAULT_PASSWORD: dùng cho script khởi tạo admin; hãy đổi ngay khi triển khai thật.PUBLIC_BASE_URL: origin HTTPS của bản triển khai; được ghim vào magic link và URL của QR.
Với môi trường production, bạn cần thêm ALLOWED_ORIGINS, TRUST_PROXY_HEADERS=1 (nếu đứng sau reverse proxy) và FORCE_HSTS=1 (sau khi đã chuyển hẳn sang TLS). Xem hướng dẫn bảo mật để có danh sách kiểm tra việc gia cố đầy đủ.
4. Thêm PDF template + fonts¶
- Đặt file PDF chứng chỉ vào
templates/main.pdf. Mỗi trang tương ứng một ô trongcert.config.json#results(ví dụG.GOLDứng với trang 1). - Đặt font TTF vào
assets/fonts/với tên file khớp vớicert.config.json#fonts.
Nếu muốn dùng thử mà chưa cần tài nguyên thật, hãy chạy ví dụ demo-academy (xem Deploy bằng Docker hoặc examples/demo-academy/README.md).
5. Seed dữ liệu test + chạy¶
lvt-cert seed --count 10 --seed 42 # ghi data/students.xlsx
lvt-cert gen-keys # chỉ khi features.qr_verify.enabled
lvt-cert dev # http://127.0.0.1:5000
Các đường dẫn truy cập:
/: cổng học viên công khai (tra cứu và tải về)./admin: trang quản trị (tạo admin đầu tiên bằngluonvuitoi_cert.auth.create_admin_user; xem Xác thực quản trị)./certificate-checker: trang xác thực QR công khai.
Tiếp theo¶
- Kiến trúc: các thành phần ghép nối với nhau ra sao.
- Cấu hình: mọi khóa trong
cert.config.jsoncùng các biến môi trường. - Bảo mật: danh sách kiểm tra gia cố cho production.
- Hướng dẫn PDF overlay: tọa độ, fonts, định vị trường.
- Xác thực quản trị: các chế độ đăng nhập và cách thu hồi session.
- Vận hành: health probe, logs, audit trail.
- Khắc phục sự cố: các lỗi thường gặp.
- Deploy lên Vercel hoặc Docker.