CertiMaster is a versatile and user-friendly certificate generation tool designed to create professional-quality certificates efficiently. Whether you're organizing a workshop, conference, or academic event, CertiMaster simplifies the process of generating personalized certificates with custom fonts and templates.
- Support for Multiple File Formats: Generate certificates from names provided in
.txt,.csv, or.xlsxfiles. - Customizable Templates: Use your own image templates in
.png,.jpg, or.jpegformats. - Flexible Font and Design Options: Adjust font size, color, and vertical positioning to fit your design needs.
- Preview Feature: Visualize certificates before final generation to ensure they meet your expectations.
- Automatic Cleanup: Temporary files are automatically deleted after processing.
-
Clone the repository:
git clone https://github.com/A-Akhil/CertiMaster.git cd CertiMaster -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use venv\Scripts\activate
-
Install the required packages:
pip install -r requirements.txt
streamlit run ui.pyUpload Files:
Upload a .txt, .csv, or .xlsx file containing the names.
Upload an image file for the certificate template.
Customize Settings:
Enter the output directory.
Adjust the vertical position and font size.
Select a font from available system fonts.
Generate Certificates:
Click the "Generate Certificates" button to start the creation process.
View the preview and verify before finalizing.
We now offer a fully client-side React version of CertiMaster! No installation required if deployed, or run it locally with Node.js.
- 100% Client-Side: No data leaves your browser.
- Blazing Fast: Generates certificates instantly.
- Multiple File Support: Upload .txt, .csv, .xlsx, or .xls files.
- Custom Templates: proper .png, .jpg, or .jpeg support.
- Drag-and-Drop Editor: Position names easily.
- Customization: Adjust font, size, color, and position.
- Batch Export: Download as ZIP.
-
Navigate to the web directory:
cd web -
Install dependencies:
npm install
-
Run the development server:
npm run dev
-
Open the URL shown in the terminal.
The web client includes an optional QR code verification system. When enabled, each certificate gets a unique QR code printed on it. Scanning the QR opens a hosted verification page that confirms the certificate is genuine.
- Each certificate is assigned a UUID at generation time.
- A QR code encoding
<server-url>/verify/<uuid>is drawn onto the certificate canvas. - All records are batch-saved to a Cloudflare D1 database via the verification backend.
- Anyone who scans the QR gets a verification page showing the recipient name, event, and issue date — or an "invalid" page if the ID does not exist.
The verification backend just needs to be any server that exposes the required endpoints (GET /health, POST /api/batch-save, GET /verify/:id). The Cloudflare Worker in verification-backend/ is the reference implementation, but you can use Express, FastAPI, Railway, or any other stack.
Full step-by-step setup instructions (including the required API contract) are in verification-backend/SETUP.md.
If you are reading this from outside the repo or do not have the backend folder locally, use this direct setup guide link: https://github.com/A-Akhil/CertiMaster/blob/main/verification-backend/SETUP.md
Quick summary:
# 1. Create the D1 database
npx wrangler d1 create certimaster-db
# 2. Paste the returned database_id into verification-backend/wrangler.toml
# 3. Run the schema migration
npx wrangler d1 execute certimaster-db --remote --file=verification-backend/schema.sql
# 4. Set your two keys
echo "your-api-key" | npx wrangler secret put API_KEY
echo "your-admin-pwd" | npx wrangler secret put ADMIN_KEY
# 5. Deploy
cd verification-backend && npx wrangler deployEdit verification-backend/src/verify-valid.html and verify-invalid.html directly. Use {{NAME}}, {{EVENT}}, {{DATE}}, {{ID}}, {{ORG_NAME}}, and {{VERIFIED_ON}} as placeholders — they are filled in at request time. Redeploy with npx wrangler deploy to apply changes.
Any change — whether to the HTML templates or to the worker logic in src/index.js — takes effect after redeploying:
cd verification-backend && npx wrangler deploySecrets and D1 data are preserved across deployments. Only the worker code changes.
A password-protected admin panel is available at <worker-url>/admin. Log in with your ADMIN_KEY to view, search, filter, add, edit, and delete certificate records.
Thanks a lot for spending your time helping this InternetAwareAI grow. Thanks a lot! Keep rocking
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
You are free to use, modify, and distribute this software under the terms of the GPL v3. Any derivative work must also be distributed under the same license.