A comprehensive digital solution for university placement cells to manage attendance, assessments, and seat allocations efficiently.
University placement processes often suffer from significant inefficiencies:
- Manual Attendance: Passing physical sheets is time-consuming and prone to loss.
- Proxy Attendance: Students signing for absent peers compromises data integrity.
- Poor Visibility: Administrators lack real-time data on student participation.
- Manual Shortlisting: Filtering eligible students for drives is tedious and error-prone.
- Allocation Chaos: Manually assigning labs and seats for assessments is logistically complex.
This portal digitizes the entire placement workflow. It enables administrators to create live sessions, projects dynamic QR codes for secure attendance, and manages the end-to-end flow of assessments from eligibility to seat allocation. Designed for scalability, it handles high-concurrency scans and provides role-based dashboards for clear visibility.
- Session Management: Create, start, pause, and stop attendance events.
- Real-time Monitoring: View live attendance counts and student lists as they scan.
- Assessment Control: Create assessments, manage eligibility, and upload candidate lists via CSV.
- Automated Allocation: One-click shuffling and seat allocation for lab exams to prevent dishonesty.
- Data Export: Download attendance and allocation reports in CSV/PDF formats.
- Secure Dashboard: View profile status and upcoming drives.
- QR Scanner: Integrated scanner with deep-linking support for quick attendance marking.
- History & Logs: Access personal attendance history and verify participation.
- Seat Allocation: View assigned lab and seat number immediately upon allocation.
- Dynamic QR Code: Rotating logic (every 10s) to prevent static photo-based proxy attendance.
- Live Counter: Displays total present count in real-time to motivate punctuality.
- Status Indicators: Visual cues for session state (Active/Paused/Stopped).
- Frontend: React for component-based UI, Vite for ultra-fast build times.
- Backend: Node.js & Express for scalable, non-blocking API handling.
- Database: PostgreSQL for robust relational data integrity.
- Auth: JWT for secure, stateless session management.
- Deployment: Vercel (Client) & Railway (Server) for reliable CI/CD pipelines.
The application checks for robustness and integrity using a monolithic architecture with separated concerns:
- Frontend: React.js (Vite) for a responsive and interactive user interface.
- Backend: Node.js with Express.js REST API for business logic.
- Database: PostgreSQL for relational data integrity (User, Events, Attendance, Assessments).
- Deployment:
- Frontend hosted on Vercel for global edge delivery.
- Backend and Database hosted on Railway for reliable containerization and managed SQL.
- OTP-Based Login: Passwordless entry using email and one-time passwords via Nodemailer.
- Session Security: JWT (JSON Web Tokens) used for stateless authentication.
- Role-Based Access Control (RBAC): Strict separation between
adminandstudentroutes. Middleware verifies roles before granting access to sensitive endpoints.
- Creation: Admin creates an event (e.g., "TCS Pre-placement Talk").
- Projection: Admin launches the "Projector View". A unique, rotating QR code appears.
- Scanning: Students scan the code using the portal's built-in scanner.
- Verification: The backend validates the token, user location (optional), and prevents duplicate entries.
- Confirmation: Success message appears on the student's device; Admin counter increments instantly.
- Setup: Admin defines an assessment (e.g., "Coding Round 1").
- Shortlisting: Admin uploads a CSV of eligible enrollment numbers.
- Lab Setup: Admin defines available labs and capacity (e.g., "Lab A: 60 seats").
- Allocation: The system randomly assigns eligible students to available seats, ensuring no two adjacent students have the same set if applicable (future scope).
- Publication: Admin publishes the allocation. Students see their specific Lab and System Number on their dashboard.
- Node.js (v18+)
- PostgreSQL installed locally or a remote connection string.
- Navigate to root directory.
- Install dependencies:
npm install - Create
.envfile:PORT=5000 DATABASE_URL=postgresql://user:pass@localhost:5432/smart_attendance JWT_SECRET=your_secure_secret EMAIL_USER=your_email@gmail.com EMAIL_PASS=your_app_password - Initialize Database:
npm run migrate(or rundatabase/init.sql). - Start Server:
npm run dev
- Navigate to
client/directory. - Install dependencies:
npm install - Start Dev Server:
npm run dev
- Connect GitHub repository.
- Set Root Directory to
client. - Build Command:
npm run build - Output Directory:
dist - Add environment variable:
VITE_API_URLpointing to the backend production URL.
- Connect GitHub repository.
- Add generic service.
- Set Start Command:
node src/index.js(ornpm start). - Add PostgreSQL plugin.
- Railway automatically injects
DATABASE_URL. - Set other variables (
JWT_SECRET,EMAIL_USER, etc.) in Railway dashboard.
- Role Enforcement: API endpoints explicitly check
req.user.role. - Duplicate Prevention: Database constraints prevent multiple attendance records for the same event.
- Input Validation: Inputs are sanitized to prevent SQL injection (via parameterized queries).
- Cors Policy: Restricted to allowed domains in production.
- Current Limitation: The QR rotation relies on client-server time synchronization. Significant drift may cause token invalidation.
- Current Limitation: Manual CSV upload is required for shortlisting; direct integration with university ERP is not yet implemented.
- Future: Implementation of WebSockets for sub-second attendance updates (currently polling).
- Future: Geofencing support to restrict scanning to specific physical coordinates.
- Admin Flow: Login -> Dashboard (Overview) -> Create Event -> Launch Projector View -> Monitor.
- Student Flow: Login (OTP) -> Dashboard (Status) -> Scan QR -> innovative Success/Failure Feedback -> View History.
- Projector Flow: Large, high-contrast display purely for QR projection and live stats, designed for readability from a distance.
Developed by Pranav for University Placement Cell automation architecture.