A comprehensive web application for managing student certificates, user authentication, and exam-related processes at IIIT Lucknow.
This system streamlines the process of certificate generation, approval, and delivery for students and administrators. It features:
- Secure authentication (OTP, JWT, role-based)
- Automated PDF certificate generation with digital signatures
- Admin dashboard for managing users, requests, and logs
- Real-time notifications via and web push (Firebase)
- Password change request workflow
- Full activity logging and audit trail
- Secure login using IIITL email (
@iiitl.ac.in) - OTP-based authentication (email & WhatsApp)
- JWT-based session management
- Role-based access control (Admin/Student)
- Generate bonafide certificates with unique identifiers
- Digital signature verification (SHA-256)
- Certificate approval/signing workflow (admin only)
- Download certificates in PDF format
- Send certificates via email and WhatsApp
- Track certificate status and history
- Automatic certificate expiration after 30 days
- Unique certificate number format:
BON/YEAR/8DIGITHEX - College logo and official letterhead
- Digital signature for verification
- Student details: Name, Enrollment Number, Course, Semester, Purpose, Issue date, Expiry date
- View/manage all certificate and password requests
- Approve/reject/sign certificates
- Download student and request data as CSV
- View system logs and activity history
- Manage users (add/delete)
- Real-time dashboard statistics, including:
- Total Students (registered in the system)
- Total Certificates (bonafide certificates generated)
- Pending Certificate Requests (awaiting admin signature/approval)
- Password Change Requests (active requests)
- Other Key Metrics (recent activity, logs, and system health)
- OTP delivery via email and WhatsApp
- Real-time web push notifications (Firebase)
- Email/WhatsApp delivery of signed certificates
- Students can request password changes
- Admins can approve/reject requests
- Full audit trail for password changes
- All major actions are logged (certificate generation, signing, login, etc.)
- Admins can view logs in a timeline/history view
- Java 21
- Spring Boot 3.2.3
- Spring Security
- Spring Data JPA
- MySQL Database
- iText PDF for certificate generation
- JWT for authentication
- Spring Mail for OTP/email delivery
- WhatsApp Business API for notifications
- Firebase Admin SDK for web push notifications
- React 19
- Vite
- Tailwind CSS
- Radix UI Components
- React Router
- TypeScript (with some JS)
- Firebase for notifications
Backend/
├── src/
│ ├── main/java/com/login/
│ │ ├── config/ # Spring & security configuration
│ │ ├── controllers/ # REST API endpoints (auth, admin, student, bonafide, etc.)
│ │ ├── dto/ # Data Transfer Objects
│ │ ├── entity/ # JPA entities (Admin, Student, Certificate, Log, etc.)
│ │ ├── models/ # JWT, OTP, and utility models
│ │ ├── repositories/ # JPA repositories
│ │ ├── scheduler/ # Scheduled tasks (e.g., certificate cleanup)
│ │ ├── services/ # Business logic (auth, bonafide, email, WhatsApp, etc.)
│ │ ├── utils/ # PDF generation, helpers
│ │ └── login/ # Web config (CORS)
│ └── resources/
│ ├── application.properties.sample
│ └── schema.sql
│ └── assets/
│ └── logo.png
Frontend/
├── src/
│ ├── components/ # Reusable UI components (tables, dashboard, notifications, etc.)
│ ├── pages/ # Page-level components (login, dashboard, admin, etc.)
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions
│ ├── config/ # Firebase and other config
│ └── assets/ # Static assets (images, icons)
POST /api/request-otp— Request OTP for login (email & WhatsApp)POST /api/login— Authenticate with email and OTPPOST /api/validate-token— Validate JWT token
POST /api/admin/request-otp— Request OTP for admin loginPOST /api/admin/login— Admin login with OTP and passwordGET /api/admin/{email}— Get admin detailsGET /api/admin/dashboard-stats— Dashboard statisticsGET /api/admin/students/csv— Download students as CSVDELETE /api/admin/students/{rollNumber}— Delete student
POST /api/students— Create studentPUT /api/students— Update studentGET /api/students/{email}— Get student by email
POST /api/bonafide/generate— Generate new certificateGET /api/bonafide/download/{uid}— Download certificate PDFPOST /api/bonafide/sign— Sign/approve certificate (admin only)GET /api/bonafide/uid/{rollNo}— Get certificates by roll numberGET /api/bonafide/all— Get all certificates (admin)POST /api/bonafide/send-email/{uid}— Email certificatePOST /api/bonafide/send-whatsapp/{uid}— WhatsApp certificate
POST /api/password-requests/create— Create password change requestPOST /api/password-requests/accept— Approve password change (admin)POST /api/password-requests/delete— Delete password requestGET /api/password-requests— List all password requestsGET /api/password-requests/export-csv— Export requests as CSV
GET /api/logs— Get all system logs
- Email: OTPs, welcome messages, and certificates
- WhatsApp: OTPs and certificates (via WhatsApp Business API)
- Web Push: Real-time notifications (Firebase Cloud Messaging)
- JWT-based authentication
- Role-based access control (admin/student)
- Secure password and OTP handling
- Digital signature on certificates
- Automatic certificate expiration and cleanup
- CORS and CSRF protection (configurable)
- Java 21
- Node.js (v18+ recommended)
- MySQL
- Maven
- Clone the repository
- Configure MySQL database in
application.properties - Add your Firebase service account JSON to the classpath
- Build the project:
cd Backend mvn clean install - Run the application:
mvn spring-boot:run
- Install dependencies:
cd Frontend npm install - Start development server:
npm run dev
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.