🤝 Tạm biệt đồng đội @Liamlenguyen. Chúc bạn thành công trên con đường đã chọn ✨
📧 htkien95@gmail.com · 📱 +84 348 635 408
LUONVUITUOI-CERT¶
Bộ công cụ cổng chứng chỉ vận hành theo cấu hình. Chỉ cần mang theo file PDF mẫu và danh sách học viên của bạn, bạn sẽ có ngay một cổng tra cứu, tải về, xác thực QR và trang quản trị chỉ trong vài phút.
Tại sao cần công cụ này?¶
Bạn đang tổ chức một cuộc thi, trao chứng chỉ cho học viên, hoặc phát bằng hoàn thành khóa học? Thông thường bạn cần một trang công khai để người nhận tra cứu và tải PDF, một trang quản trị để quản lý dữ liệu, và một trang xác thực để bên thứ ba kiểm tra tính xác thực. LUONVUITUOI-CERT cung cấp cả ba, deploy được lên Vercel free tier hoặc bất kỳ Docker host nào, không cần viết code thừa.
Dùng template riêng của bạn¶
Chỉ cần đưa vào file PDF cùng tọa độ. Engine tự động overlay tên học viên, ngày cấp và mã QR chính xác đến từng pixel, bạn không phải thiết kế lại.
Cổng tra cứu công khai¶
Người nhận tìm theo tên hoặc số báo danh, xem trước chứng chỉ, tải PDF đã ký. Tối ưu mobile-first, hỗ trợ đa ngôn ngữ.
Trang quản trị có sẵn¶
Quản lý hồ sơ, sửa lỗi, theo dõi vận chuyển, audit log. Bảo vệ bằng JWT + giới hạn tốc độ truy cập.
Xác thực QR¶
Mỗi chứng chỉ gắn một mã QR dẫn đến trang xác thực công khai, bên thứ ba chỉ cần quét một lần là xác minh được.
Triển khai bất cứ đâu¶
Deploy Vercel chỉ bằng một lệnh (free tier), Dockerfile sẵn sàng cho production, docker-compose: bạn tự chọn hạ tầng.
Cấu hình thay vì code¶
Một file cert.config.json điều khiển mọi thứ: branding, fields, tọa độ overlay, auth, shipment. Không cần fork repo.
Kiến trúc¶
flowchart LR
A[cert.config.json] --> B[Python serverless API]
B --> C[Cổng học viên<br/>/ + /verify]
B --> D[Trang quản trị<br/>/admin]
B --> E[(SQLite<br/>students)]
B --> F[(KV backend<br/>overrides)]
C -.quét QR.-> G[Trang xác thực]
style A fill:#fbbf24,stroke:#d97706,color:#0f172a
style B fill:#0d6e6e,stroke:#0a5757,color:#fff
style C fill:#14b8a6,stroke:#0d6e6e,color:#fff
style D fill:#14b8a6,stroke:#0d6e6e,color:#fff
style G fill:#ccfbf1,stroke:#0d6e6e,color:#0a5757