A powerful, client-side bulk certificate generation tool built with Next.js. Generate hundreds of custom certificates with QR codes directly in your browser. No server uploads, total privacy.
- β‘ Bulk Generation: Process hundreds of records from a single CSV file in seconds.
- π¨ Custom Designs: Upload any image as your certificate template.
- π Smart QR Codes: Automatically generate and embed QR codes for verification links.
- π±οΈ Drag & Drop Editor: Intuitive UI to position text and QR codes on your template.
- π Privacy First: All processing happens locally in your browser. Your data never leaves your device.
- π¦ One-Click Zip: Download all generated certificates as a neatly organized ZIP archive.
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS
- PDF Engine: pdf-lib
- CSV Parsing: Papa Parse
- QR Generation: qrcode
- Compression: JSZip
- Node.js 18.17 or later
- npm or yarn
-
Clone the repository
git clone https://github.com/yourusername/certify.git cd certify/web -
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open the app Visit http://localhost:3000 in your browser.
Prepare a CSV file with your participant details. The file should have headers (e.g., Name, Email, VerifyLink).
Tip: The system automatically detects columns named "Name" or "Link".
Select which columns from your CSV correspond to the Recipient Name and Verification Link. You can skip the link if you don't need QR codes.
- Upload your certificate template (PNG or JPG).
- Use the controls to adjust the Position (X, Y), Font Size, and Color of the recipient's name.
- Position and resize the QR Code.
- The preview updates in real-time!
Click Generate. The app will process each row in your CSV, create a PDF, and bundle everything into a ZIP file for download.
web/
βββ app/ # Next.js App Router
β βββ page.tsx # Main application page
β βββ layout.tsx # Root layout
βββ components/ # UI Components
β βββ UploadStep.tsx # CSV file upload
β βββ MappingStep.tsx # Column mapping logic
β βββ DesignStep.tsx # Visual editor for certificate
β βββ GenerateStep.tsx # PDF generation & Zip logic
βββ lib/ # Utilities (cn, etc.)
βββ types/ # TypeScript interfaces
Contributions are always welcome!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.