A modern, open-source certificate generator built with Next.js 14 and Tailwind CSS. Create, customize, and export professional certificates with an intuitive drag-and-drop interface.
- π Secure Authentication: Protected routes with session management
- π¨ Drag & Drop Editor: Intuitive interface for positioning elements
- π Advanced Text Customization: Font selection, colors, sizing, and positioning
- πΌοΈ Template Management: Multiple pre-built templates with custom upload support
- πΎ High-Quality Export: Download certificates as PNG at 2x resolution
- π Dark/Light Mode: Seamless theme switching
- π± Responsive Design: Works flawlessly across all devices
- β‘ Real-Time Preview: See changes instantly as you edit
- π― Precise Positioning: Pixel-perfect element placement
- π€ Local Font Support: Merriweather font loaded locally to avoid CORS issues
- π§ Email Queue System: PostgreSQL-backed email queueing with n8n integration
- π Auto-Refresh Status: Real-time email status monitoring (5-second intervals)
- π¦ Batch Generation: Generate and queue multiple certificates at once
- π Professional Email Presets: 4 ready-to-use templates (Event, KPI, Internship, Custom)
- π n8n Webhook Integration: Automated email sending via external workflow
- Quick Start Guide - Get up and running in 5 minutes β‘
- Docker Deployment Guide - Complete Docker setup and configuration π³
- n8n Email Setup - Configure automated email sending π§
- Contributing Guide - Help improve CertifiKit π€
- License - MIT License π
This system includes a complete email queue with:
- PostgreSQL Database: For storing email queue and status
- n8n Webhook: Automated email sending workflow
- 4 Email Presets: Professional templates for different use cases
- Batch Support: Queue multiple certificates with personalized emails
- Status Tracking: Real-time monitoring with auto-refresh
The application features secure authentication to ensure only authorized users can create and manage certificates.
Username: admin
Password: CertifiKit2024!
- Session-based authentication
- Protected routes with middleware
- Automatic redirect to login for unauthenticated users
- Secure logout functionality
- Client-side route protection
- 7-day session duration
For production deployment, update the credentials in src/lib/auth.ts:
export const ADMIN_CREDENTIALS = {
username: "your_new_username",
password: "your_strong_password",
};Better Practice - Use Environment Variables:
Create a .env.local file in the root directory:
NEXT_PUBLIC_ADMIN_USERNAME=your_username
NEXT_PUBLIC_ADMIN_PASSWORD=your_strong_password
SESSION_SECRET=your_random_secret_key
DATABASE_URL=postgresql://user:password@host:5432/database
N8N_WEBHOOK_URL=https://your-n8n-instance.com/webhook/certificate-email-apiThen update src/lib/auth.ts to use these variables:
export const ADMIN_CREDENTIALS = {
username: process.env.NEXT_PUBLIC_ADMIN_USERNAME || "admin",
password: process.env.NEXT_PUBLIC_ADMIN_PASSWORD || "CertifiKit2024!",
};certifikit/
βββ public/
β βββ logo.svg # Application logo
β βββ templates/ # Certificate templates
βββ src/
β βββ app/ # Next.js app router
β β βββ page.tsx # Landing page
β β βββ login/ # Authentication page
β β βββ dashboard/ # User dashboard
β β βββ generator/ # Certificate editor
β βββ components/
β β βββ auth/ # Authentication components
β β β βββ login-form.tsx
β β β βββ protected-route.tsx
β β βββ certificate/ # Core certificate components
β β β βββ canvas.tsx # Main editing workspace
β β β βββ download-button.tsx # PNG export functionality
β β β βββ draggable-text.tsx # Text element manipulation
β β β βββ text-controls.tsx # Text customization panel
β β β βββ image-controls.tsx # Image management
β β β βββ template-selector.tsx # Template browser
β β β βββ batch-generator.tsx # Bulk certificate generation
β β βββ layout/ # Layout components
β β β βββ navbar.tsx
β β β βββ sidebar.tsx
β β β βββ footer.tsx
β β βββ onboarding/ # User guidance
β β β βββ tour.tsx
β β β βββ generator-tour.tsx
β β βββ ui/ # Shadcn/ui components
β β βββ button.tsx
β β βββ accordion.tsx
β βββ hooks/
β β βββ use-auth.ts # Authentication hook
β βββ lib/
β β βββ auth.ts # Auth utilities
β β βββ utils.ts # Helper functions
β β βββ batch-generator.ts # Batch processing
β βββ types/
β β βββ certificates.ts # Certificate type definitions
β β βββ batch.ts # Batch generation types
β βββ styles/
β β βββ globals.css # Global styles
β βββ assets/
β βββ fonts/ # Local font files
β βββ Merriweather_24pt-Bold.ttf
β βββ Merriweather_24pt-Regular.ttf
βββ .env.local # Environment variables (create this)
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # Tailwind configuration
βββ package.json
All commands are run from the root of the project, from a terminal:
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:3000 |
npm run build |
Build your production site to ./.next/ |
npm run start |
Preview your build locally, before deploying |
npm run lint |
Run ESLint to check code quality |
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- Shadcn/ui - Beautiful, accessible UI components
- html2canvas - High-quality image export
- Lucide Icons - Clean, customizable icons
- PostgreSQL - Email queue database
- n8n - Workflow automation for email sending
-
Login using your credentials
-
Navigate to Generator from the dashboard
-
Select a Template or upload your own certificate design
-
Add Text Elements:
- Click "Add Text" to create new elements
- Drag elements to position them
- Customize font, size, color, and alignment
-
Add Images (optional):
- Upload logos or graphics
- Position and resize as needed
-
Preview in Real-Time:
- All changes appear instantly
- Zoom in/out for precise editing
-
Download Certificate:
- Click "Download PNG" button
- High-quality 2x resolution export
- Custom filename with timestamp
-
Batch Generation:
- Upload CSV with recipient data
- Generate multiple certificates at once
- Queue emails for automated sending
Main editing workspace with drag & drop functionality, element selection, real-time preview, and canvas scaling.
High-quality export featuring html2canvas integration, 2x scale for crisp output, CORS handling, and error management.
Text manipulation with free positioning, visual selection feedback, mouse-based dragging, and position updates.
Customization panel including font family picker, size slider, color picker, and alignment options.
- Add template image to
public/templates/ - Update template list in
template-selector.tsx - Configure default dimensions
- Modify Tailwind classes in components
- Update colors in
tailwind.config.js - Add custom CSS in
globals.css
To use different fonts:
- Add font files to
src/assets/fonts/ - Update
@font-faceinglobals.css - Reference in text controls
The download functionality generates professional-quality images:
- 2x Resolution: Double the display resolution
- Scale Factor: Configurable for higher quality
- CORS Handling:
useCORSandallowTaintenabled - Background: White (#ffffff) for compatibility
- Format: PNG for lossless quality
- File Naming: Auto-generated with timestamp
The application adapts to all screen sizes with mobile-optimized interface, touch-friendly controls, responsive canvas scaling, adaptive sidebar, and mobile-first approach.
- Change default credentials immediately after deployment
- Use environment variables for sensitive data
- Enable HTTPS in production (required for secure cookies)
- Implement rate limiting for auth endpoints
- Regular security audits of dependencies
- Secure session management with HTTP-only cookies
- Monitor access logs for unauthorized attempts
The easiest way to deploy CertifiKit is using Docker. See the Docker Deployment Guide for complete instructions.
Quick Start with Docker:
# Clone the repository
git clone https://github.com/KpG782/certifikit.git
cd certifikit
# Copy environment file
cp .env.example .env.local
# Edit .env.local with your credentials
# Build and run with Docker Compose
docker-compose up -d
# Access at http://localhost:3000- Node.js 18+ installed
- npm or yarn package manager
- PostgreSQL database (for email queue feature)
- n8n instance (for email automation)
-
Clone the repository
git clone https://github.com/kenken64/certifikit.git cd certifikit -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local # Edit .env.local with your credentials -
Build for production
npm run build
-
Deploy to hosting provider
- Vercel (Recommended):
vercel --prod - Netlify: Connect repository
- AWS/Azure: Use appropriate deployment tools
- Ensure environment variables are set in hosting dashboard
- Vercel (Recommended):
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
- Certificate Icon - Created by Smashicons from Flaticon
- UI Icons - Lucide Icons (ISC License)
This project uses the following open-source libraries:
- Next.js (MIT License) - React framework
- React (MIT License) - UI library
- Tailwind CSS (MIT License) - CSS framework
- TypeScript (Apache-2.0 License) - Type safety
- Shadcn/ui (MIT License) - UI components
- html2canvas (MIT License) - Canvas rendering
- Framer Motion (MIT License) - Animations
- PostgreSQL (PostgreSQL License) - Database
- n8n (Apache-2.0 License) - Workflow automation
All dependencies are properly licensed and included in this open-source project.
This software is provided as open-source under the MIT License. You are free to:
- β Use for personal and commercial projects
- β Modify and customize the code
- β Distribute modified versions
- β Include in proprietary software
Important: While this software is open-source, users are responsible for ensuring they have proper rights to any images, logos, or content used in certificates:
- Template Images: Ensure you own or have permission to use certificate template designs
- Logos & Graphics: Verify you have rights to use any company logos or images
- Signatures: Obtain authorization before using signature images
- Fonts: Confirm font licenses permit commercial use in certificates
- Recipient Data: Comply with GDPR, CCPA, and applicable privacy laws
- β Use your own designs and assets
- β Use properly licensed stock images (e.g., Unsplash, Pexels with proper attribution)
- β Create original certificate templates
- β Obtain written permission for third-party assets
- β Include proper attributions where required
This open-source software is provided "AS IS" without warranty. The developers and contributors:
- β Do not claim ownership of user-generated content
- β Are not responsible for copyright violations by users
- β Do not guarantee legal compliance of certificates created
- β Cannot be held liable for misuse of the software
For Commercial Use: Consult with a legal professional to ensure compliance with:
- Copyright laws in your jurisdiction
- Trademark regulations
- Privacy and data protection laws (GDPR, CCPA, etc.)
- Industry-specific certification requirements
When using this software, please:
- Maintain License: Keep the MIT License in distributed copies
- Credit Original: Link back to this repository when sharing
- Icon Attribution: Include Smashicons/Flaticon credit if using the default icon
- Respect Trademarks: Do not claim association with original authors
THE SOFTWARE AND ALL ASSOCIATED DOCUMENTATION ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM THE USE OF THIS SOFTWARE OR CERTIFICATES GENERATED WITH IT.
Users are solely responsible for:
- Legal compliance in their jurisdiction
- Proper licensing of all assets used
- Accuracy of information on certificates
- Data privacy and security measures
- Obtaining necessary permissions and rights
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright Β© 2025 CertifiKit Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Need help?
- Open an issue on GitHub
- Check the documentation in the
/docsfolder - Review existing issues and discussions
- Next.js Documentation
- Tailwind CSS Documentation
- Shadcn/ui Documentation
- html2canvas Documentation
- n8n Documentation
If you find this project useful, please consider giving it a star on GitHub!
Built with β€οΈ for the open-source community
Version: 1.0.0
Last Updated: November 2025
