Bỏ qua

Bắt đầu nhanh

Từ zero đến một cổng chứng chỉ đang chạy trong năm phút.

Yêu cầu

  • Python 3.11 trở lên
  • Một file PDF template với mỗi trang tương ứng một biến thể (môn, kết quả) — hoặc dùng example demo-academy sẵn có, nó tự vẽ template khi chạy.
  • Một font TrueType cho mỗi style bạn muốn (ví dụ một serif, một script).

1. Cài đặt

Khi packages đã có trên PyPI:

pip install luonvuitoi-cert-cli

Pre-PyPI (cài từ source — nên dùng khi v1.0.0 chưa được publish):

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), được cài kèm tự động.

2. Scaffold project

lvt-cert init my-portal
cd my-portal

Trả lời các câu hỏi (name, slug, locale) hoặc dùng --non-interactive kèm --name/--slug/--locale để bỏ qua. Scaffolder sẽ tạo:

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

cp .env.example .env

Chỉnh .env và set ít nhất:

  • JWT_SECRET — 32+ ký tự random. Server từ chối cấp admin token nếu thiếu biến này.
  • ADMIN_DEFAULT_PASSWORD — dùng cho script bootstrap admin; đổi ngay cho deploy thật.
  • PUBLIC_BASE_URL — origin HTTPS của deploy; ghim magic-link + URL QR.

Với 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 cutover TLS). Xem hướng dẫn bảo mật để có checklist hardening đầy đủ.

4. Thêm PDF template + fonts

  1. Đặt file PDF chứng chỉ vào templates/main.pdf. Mỗi trang tương ứng một ô trong cert.config.json#results (ví dụ G.GOLD → trang 1).
  2. Đặt font TTF vào assets/fonts/ với tên file khớp với cert.config.json#fonts.

Nếu muốn dùng thử mà không cần asset thật, chạy example demo-academy (xem Deploy — 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

Truy cập:

  • / — cổng học viên công khai (tra cứu + tải về)
  • /admin — trang quản trị (tạo admin đầu tiên bằng luonvuitoi_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