A modern, full-stack certificate management and verification platform built with the MERN stack.
Admins can bulk-upload certificate data via Excel, auto-generate PDF certificates, and deliver them to recipients via email — all from a single dashboard. Recipients can instantly verify the authenticity of any certificate using a unique ID.
- Features
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- Usage
- Contributing
- License
| Feature | Description |
|---|---|
| 📤 Excel Upload | Bulk import recipient data via .xlsx files |
| 📄 PDF Generation | Auto-generate certificates as downloadable PDFs |
| 📧 Email Notifications | Send certificates directly to recipients via email |
| 🔍 Certificate Verification | Public verification page using a unique certificate ID |
| 🔐 Admin Panel | Secure dashboard to manage all certificates |
| Layer | Technology |
|---|---|
| Frontend | React.js |
| Backend | Node.js, Express.js |
| Database | MongoDB + Mongoose |
| PDF Generation | PDFKit / Puppeteer |
| Email Service | Nodemailer |
| Excel Parsing | xlsx / exceljs |
| Authentication | JSON Web Tokens (JWT) |
Certificate-verification-system/
│
├── backend/ # Express REST API
│ ├── certificates/ # Generated PDF certificates
│ ├── uploads/ # Temporarily stores uploaded Excel files
│ ├── .env # Environment variables (not committed)
│ └── server.js # Entry point
│
├── frontend/ # React.js client
│ └── src/
│
├── other/ # Additional scripts/assets
├── .gitignore
└── README.md
Ensure the following are installed on your system:
1. Clone the repository
git clone https://github.com/itsmnx/Certificate-verification-system.git
cd Certificate-verification-system2. Install backend dependencies
cd backend
npm install3. Install frontend dependencies
cd ../frontend
npm install4. Configure environment variables
cp backend/.env.example backend/.envFill in your values in the .env file (see Environment Variables below).
5. Start the development servers
# Terminal 1 — Backend
cd backend
npm start
# Terminal 2 — Frontend
cd frontend
npm start| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Backend API | http://localhost:5000 |
Create a .env file inside the backend/ directory using the following template:
# MongoDB Connection
MONGO_URI=mongodb://localhost:27017/certificate-db
# Server
PORT=5000
# Authentication
JWT_SECRET=your_jwt_secret_here
# Email Configuration (Nodemailer)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password_here
# CORS
CLIENT_URL=http://localhost:3000
⚠️ Important: Never commit your.envfile. It is already listed in.gitignore.
If using Gmail as your email provider:
- Enable 2-Factor Authentication on your Google account
- Generate an App Password
- Use that App Password as the value for
EMAIL_PASS
- Admin Login — Sign in to the secure admin dashboard
- Upload Excel — Import an
.xlsxfile containing recipient details (name, email, course, date, etc.) - Generate Certificates — The system auto-generates a PDF certificate for each recipient
- Send Emails — Certificates are automatically emailed to all recipients
- Verify Certificate — Anyone can visit the public verification page, enter a Certificate ID, and confirm its authenticity instantly
Contributions are welcome and appreciated! To contribute:
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Commit your changes
git commit -m "feat: describe your change" - Push to your branch
git push origin feature/your-feature-name
- Open a Pull Request and describe what you changed and why
Please check the Issues tab for open tasks before starting work.
This project is open source. Contributions and forks are welcome.