π Live Demo π
Features β’ Screenshots β’ Installation β’ Tech Stack β’ Documentation
π Try ProxyMukt Live
Instant Access - No Installation Required!
| Role | Password | |
|---|---|---|
| π Admin | admin@proxymukt.com |
Admin@123 |
| π¨βπ« Faculty | faculty1@gmail.com |
faculty1 |
| π¨βπ Student | student1@gmail.com |
student1 |
Experience the full power of multi-layer fraud detection in action!
The Challenge: Proxy attendance is a widespread problem in educational institutions where students mark attendance on behalf of absent peers. Traditional systems using manual registers, static QR codes, or simple biometric methods are easily exploited, leading to:
- π Inaccurate attendance records
- π Identity fraud and impersonation
- π± Screenshot sharing of QR codes
- π Location spoofing with fake GPS apps
- π Proxy marking through VPNs and proxies
The Solution: ProxyMukt implements a multi-layered security approach combining rotating QR codes, face liveness detection, GPS geofencing, device fingerprinting, and advanced proxy detection to create a fraud-proof attendance system that's impossible to bypass.
π Experience it yourself: https://proxymukt.onrender.com/
|
|
|
|
|
|
- System-wide analytics and monitoring
- User management (bulk operations)
- Security center with threat detection
- Audit logs and activity tracking
- Department and class management
- IP whitelist configuration
- Class and session management
- Flexible verification controls
- Real-time attendance monitoring
- Student enrollment management
- Performance analytics
- Alert notifications
- QR code scanning interface
- Attendance history and analytics
- Performance tracking
- Leave/appeal management
- Timetable and schedule
- Achievement badges
- Session Types: Offline (QR) and Online (Zoom/Meet/Teams) support
- Pause/Resume: Faculty can pause sessions temporarily
- Dynamic Controls: Toggle verification methods during live sessions
- Attendance Goals: Set targets and track streaks
- Leaderboards: Gamification with rankings
- Reports: Export attendance data (CSV/PDF)
- Notifications: Real-time alerts for all stakeholders
- Dark Theme: Modern, eye-friendly UI
π Try It Live: https://proxymukt.onrender.com/
Test Credentials:
- π Admin:
admin@proxymukt.com/Admin@123 - π¨βπ« Faculty:
faculty1@gmail.com/faculty1 - π¨βπ Student:
student1@gmail.com/student1
π‘ Tip: Try logging in as different roles to experience the complete system!
Real-time session monitoring with live attendance updates, class management, and quick actions
Comprehensive system overview with analytics, user management, and security monitoring
Student portal with attendance history, performance metrics, and QR scanning
Seamless QR code scanning with face liveness and location verification
Faculty view of active session with real-time attendance feed and verification status
Security alerts for proxy detection, suspicious activity, and low attendance warnings
System-wide and class-specific announcements with priority levels
Student leave requests and appeals with document upload support
Weekly schedule with upcoming sessions and calendar integration
βοΈ React 18 - Modern UI library with hooks
π Vite - Lightning-fast build tool
π¨ Tailwind CSS - Utility-first styling
π Framer Motion - Smooth animations
π React Router - Client-side routing
π Recharts - Data visualization
π Socket.IO Client - Real-time communication
π· jsQR - QR code scanning
π― Zustand - State management
π¨ Lucide React - Beautiful icons
π’ Node.js - JavaScript runtime
β‘ Express - Web framework
π MongoDB - NoSQL database
π JWT - Authentication
π bcryptjs - Password hashing
π Socket.IO - WebSocket server
π§ Nodemailer - Email service
π‘οΈ Helmet - Security headers
β±οΈ Express Rate Limit - DDoS protection
π€ TensorFlow.js - Face liveness detection
π HMAC-SHA256 - QR token signing
π‘οΈ Advanced Proxy Detection
π Geolocation API - GPS verification
π₯οΈ Device Fingerprinting
π IP Reputation Analysis
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher) - Download
- MongoDB (v6 or higher) - Download
- Git - Download
- npm or yarn package manager
git clone https://github.com/Sumant3086/ProxyMukt-Attendance-System-.git
cd ProxyMukt-Attendance-System-# Navigate to server directory
cd server
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env with your configuration
# Required: MONGODB_URI, JWT_SECRET
# Optional: ZOOM credentials, Email service
# Seed database with sample data
npm run seed
# Start development server
npm run devServer will run on: http://localhost:5000
# Navigate to client directory (from root)
cd client
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env with API URL
# VITE_API_URL=http://localhost:5000/api
# Start development server
npm run devClient will run on: http://localhost:5173
Server Environment Variables (.env)
# Server Configuration
NODE_ENV=development
PORT=5000
# Database
MONGODB_URI=mongodb://localhost:27017/proxymukt
# JWT Authentication
JWT_SECRET=your_super_secret_jwt_key_here_change_in_production
JWT_EXPIRE=7d
# Client URL (for CORS)
CLIENT_URL=http://localhost:5173
# Admin Credentials (for seeding)
ADMIN_EMAIL=admin@proxymukt.com
ADMIN_PASSWORD=Admin@123
# Optional: Zoom Integration
ZOOM_ACCOUNT_ID=your_zoom_account_id
ZOOM_CLIENT_ID=your_zoom_client_id
ZOOM_CLIENT_SECRET=your_zoom_client_secret
# Optional: Email Service (for notifications)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_specific_password
EMAIL_FROM=ProxyMukt <noreply@proxymukt.com>Client Environment Variables (.env)
# API Configuration
VITE_API_URL=http://localhost:5000/api
# Optional: Analytics
VITE_ENABLE_ANALYTICS=falseAfter running npm run seed, use these credentials:
| Role | Password | |
|---|---|---|
| π Admin | admin@proxymukt.com | Admin@123 |
| π¨βπ« Faculty | faculty1@gmail.com | faculty1 |
| π¨βπ Student | student1@gmail.com | student1 |
Note: Faculty and students are numbered 1-50 and 1-500 respectively
graph LR
A[Student] -->|1. Scans QR| B[Verification Layer]
B -->|2. Face Liveness| C{All Checks Pass?}
B -->|3. GPS Location| C
B -->|4. Device Check| C
B -->|5. Proxy Detection| C
C -->|β
Yes| D[Attendance Marked]
C -->|β No| E[Rejected + Alert]
D -->|6. Real-time Update| F[Faculty Dashboard]
E -->|7. Security Log| G[Admin Dashboard]
- Create Class β Add class details and enroll students
- Start Session β Choose type (Offline/Online) and configure verification methods
- Monitor Live β View real-time attendance feed with student names
- Manage Session β Pause/resume, toggle QR, adjust verification settings
- End Session β Close session and review analytics
- Scan QR Code β Use camera to scan faculty's rotating QR code
- Face Verification β Complete liveness check (blink/move head)
- Location Check β Confirm presence at session location
- Background Checks β System validates device, IP, and proxy status
- Attendance Confirmed β Receive instant confirmation and notification
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Multi-Layer Security Validation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β QR Token Signature (HMAC-SHA256) β
β β Token Expiry (100 seconds) β
β β Session Binding β
β β Face Liveness (if enabled) β
β β GPS Distance (if enabled) β
β β Device Fingerprint Match β
β β IP Reputation Score β
β β Proxy/VPN Detection β
β β Impossible Travel Check β
β β Rate Limit Validation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ProxyMukt-Attendance-System/
β
βββ π client/ # React Frontend Application
β βββ π public/ # Static assets
β β βββ logo.svg
β β βββ _redirects # Netlify/Vercel redirects
β β
β βββ π src/
β β βββ π components/ # Reusable UI components
β β β βββ Navbar.jsx
β β β βββ Sidebar.jsx
β β β βββ FaceVerification.jsx
β β β βββ QRDisplay.jsx
β β β βββ AnalyticsCharts.jsx
β β β βββ ...
β β β
β β βββ π pages/ # Page components
β β β βββ AdminDashboard.jsx
β β β βββ FacultyDashboard.jsx
β β β βββ StudentDashboard.jsx
β β β βββ StartSession.jsx
β β β βββ ScanQR.jsx
β β β βββ ...
β β β
β β βββ π store/ # Zustand state management
β β β βββ authStore.js
β β β βββ sessionStore.js
β β β
β β βββ π utils/ # Utility functions
β β β βββ axiosInstance.js
β β β βββ deviceFingerprint.js
β β β βββ voiceAnnouncements.js
β β β
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β β βββ index.css # Global styles
β β
β βββ package.json
β βββ vite.config.js
β βββ tailwind.config.js
β
βββ π server/ # Node.js Backend Application
β βββ π src/
β β βββ π config/ # Configuration files
β β β βββ db.js # MongoDB connection
β β β βββ constants.js # App constants
β β β
β β βββ π controllers/ # Business logic
β β β βββ authController.js
β β β βββ sessionController.js
β β β βββ attendanceController.js
β β β βββ analyticsController.js
β β β βββ ...
β β β
β β βββ π middleware/ # Custom middleware
β β β βββ auth.js # JWT authentication
β β β βββ role.js # Role-based access
β β β βββ advancedSecurity.js # Fraud detection
β β β βββ rateLimitMiddleware.js
β β β βββ ...
β β β
β β βββ π models/ # Mongoose schemas
β β β βββ User.js
β β β βββ Class.js
β β β βββ Session.js
β β β βββ Attendance.js
β β β βββ ...
β β β
β β βββ π routes/ # API routes
β β β βββ authRoutes.js
β β β βββ sessionRoutes.js
β β β βββ attendanceRoutes.js
β β β βββ ...
β β β
β β βββ π utils/ # Utility functions
β β β βββ advancedProxyDetection.js
β β β βββ clientFingerprinting.js
β β β βββ emailService.js
β β β βββ cache.js
β β β
β β βββ server.js # Server entry point
β β
β βββ package.json
β βββ seed.js # Database seeding script
β βββ .env.example
β
βββ π screenshots/ # Project screenshots
β βββ AdminDashboard.png
β βββ FacultyDashboard.png
β βββ StudentDashboard.png
β βββ ...
β
βββ render.yaml # Render.com deployment config
βββ .gitignore
βββ LICENSE
βββ README.md
POST /api/auth/register - Register new user
Request Body:
{
"name": "John Doe",
"email": "john@example.com",
"password": "SecurePass123",
"role": "STUDENT",
"studentId": "STU001",
"department": "Computer Science"
}Response:
{
"success": true,
"message": "User registered successfully",
"data": {
"user": { "id": "...", "name": "John Doe", "role": "STUDENT" },
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}POST /api/auth/login - User login
Request Body:
{
"email": "john@example.com",
"password": "SecurePass123"
}Response:
{
"success": true,
"data": {
"user": { "id": "...", "name": "John Doe", "role": "STUDENT" },
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}POST /api/sessions - Create new session
Request Body:
{
"classId": "class_id_here",
"title": "Data Structures - Lecture 5",
"date": "2025-04-07T10:00:00Z",
"sessionType": "OFFLINE",
"qrEnabled": true,
"verificationRequirements": {
"qrCode": true,
"faceVerification": true,
"locationVerification": true
},
"location": {
"latitude": 28.6139,
"longitude": 77.2090,
"radius": 100
}
}GET /api/sessions/:id/qr - Get QR token
Response:
{
"success": true,
"data": {
"qrToken": "signed_hmac_token_here",
"expiresAt": "2025-04-07T10:01:40Z"
}
}POST /api/attendance/mark - Mark attendance
Request Body:
{
"qrToken": "signed_token_from_qr",
"location": {
"latitude": 28.6140,
"longitude": 77.2091,
"accuracy": 10
},
"deviceInfo": {
"userAgent": "Mozilla/5.0...",
"deviceFingerprint": "unique_device_id"
},
"faceVerificationPassed": true
}GET /api/analytics/section?section=all - Get analytics
Response:
{
"success": true,
"data": {
"overview": {
"totalClasses": 50,
"totalSessions": 400,
"avgAttendance": 85.5
},
"trends": [...],
"topPerformers": [...]
}
}ProxyMukt is live at: https://proxymukt.onrender.com/
The application is deployed on Render.com with:
- β Automatic SSL/HTTPS
- β MongoDB Atlas database
- β Environment-based configuration
- β Auto-deploy on GitHub push
- β Health monitoring
-
Push to GitHub
git add . git commit -m "Ready for deployment" git push origin main
-
Connect to Render
- Go to Render Dashboard
- Click "New +" β "Blueprint"
- Connect your GitHub repository
- Render will auto-detect
render.yaml
-
Configure Environment Variables
- Add all required environment variables in Render dashboard
- Set
NODE_ENV=production - Configure MongoDB Atlas URI
-
Deploy
- Render will automatically build and deploy
- Get your live URL:
https://your-app.onrender.com
cd client
npm run build
# Deploy dist/ folder to Vercel or Netlify# Build frontend
cd client
npm run build
# Start production server
cd ../server
NODE_ENV=production npm start# Backend unit tests
cd server
npm test
# Frontend component tests
cd client
npm test
# E2E tests
npm run test:e2enpm run test:coverageWe welcome contributions! Here's how you can help:
# Fork the repository on GitHub
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/ProxyMukt-Attendance-System-.gitgit checkout -b feature/AmazingFeature- Write clean, documented code
- Follow existing code style
- Add tests for new features
- Update documentation
git add .
git commit -m "Add: Amazing new feature"
git push origin feature/AmazingFeature- Go to your fork on GitHub
- Click "New Pull Request"
- Describe your changes
- Wait for review
- Follow Conventional Commits
- Write meaningful commit messages
- Add tests for new features
- Update README if needed
- Be respectful and collaborative
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 Sumant Kumar
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.
Special thanks to:
- TensorFlow.js team for face detection models
- Socket.IO for real-time communication
- MongoDB for flexible database solutions
- React and Vite communities
- Tailwind CSS for beautiful styling
- All open-source contributors
- QR Code generation using
cryptoHMAC-SHA256 - Face liveness detection with TensorFlow.js
- Real-time updates powered by Socket.IO
- UI components inspired by Shadcn/ui
- Icons from Lucide React
- Charts from Recharts
Need help? We're here for you!
- π Live Demo: https://proxymukt.onrender.com/
- π§ Email: sumantyadav3086@gmail.com
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Documentation: Wiki
Major Features:
- β Multi-layer fraud detection system
- β Real-time WebSocket updates
- β Faculty-controlled verification methods
- β Advanced analytics dashboard
- β Dark theme UI with animations
- β Student enrollment management
- β Pause/resume session functionality
- β Online session support (Zoom/Meet/Teams)
- β Leave and appeal management
- β Attendance goals and streaks
- β Production deployment ready
Security Enhancements:
- π HMAC-SHA256 QR token signing
- π Advanced proxy/VPN detection
- π Device fingerprinting
- π Impossible travel detection
- π Rate limiting and DDoS protection
- Basic QR code attendance
- Simple authentication
- Manual attendance marking
- Basic reporting
- Mobile Apps (React Native)
- Biometric Authentication (Fingerprint/Face ID)
- AI-Powered Insights (Predictive analytics)
- Blockchain Integration (Immutable attendance records)
- Multi-Language Support (i18n)
- Offline Mode (PWA with sync)
- Parent Portal (Real-time notifications)
- Integration APIs (LMS, ERP systems)
- Advanced Reporting (Custom report builder)
- Video Proctoring (For online exams)
Made with β€οΈ for educational institutions worldwide
Eliminating proxy attendance, one scan at a time π