Smart Attendee is a mobile attendance automation system built for Smart India Hackathon 2025, designed to eliminate proxy attendance using QR codes, geofencing, and real-time analytics.
The app includes dedicated Teacher and Student workflows and is powered by a live Express.js + PostgreSQL backend.
The entire Flutter application was developed and integrated by Utkarsh Tiwari.
These demo accounts are safe and only expose sample data.
- Email:
faculty1@example.com - Password:
faculty123
- Email:
student1@example.com - Password:
student123
This project originated from Smart India Hackathon 2025 (Problem Statement ID: 25016 - Government of Punjab).
The Challenge: Traditional college attendance is manual, time-consuming, and highly susceptible to proxy attendance. Furthermore, faculty lack real-time analytics to identify disengaged or struggling students.
The Solution: Smart Attendee completely automates this process. By enforcing geofenced, time-sensitive QR code scanning, it eliminates proxy attendance, saves valuable teaching time, and provides real-time, actionable insights through a comprehensive analytics dashboard.
A full video tutorial showing:
- Login
- Teacher QR generation
- Student QR scanning
- Attendance verification
- Analytics overview
Smart_Attendee_appflow.mov
We recently underwent a massive UI overhaul to transition from a basic functional layout to a premium, production-ready aesthetic. Note: The new UI is fully responsive and supports both Light and Dark themes.
| Screen | Old UI (V1) | Premium UI (V2 - Light) |
|---|---|---|
| Login | ![]() |
![]() |
| Student Dashboard | ![]() |
![]() |
| Teacher Dashboard | ![]() |
![]() |
| QR Generation | ![]() |
![]() |
Key UX Upgrades:
- Animations: Replaced static loading indicators with premium
Shimmereffects and staggered slide cascades. - Visual Hierarchy: Removed cluttered tabs in favor of spacious, card-based layouts.
- Aesthetics: Upgraded to modern gradients, glassmorphism shadows, and a cohesive dark/light typography system.
- New Features: Added elegant dropdowns for Demo Access and a comprehensive Session Complete summary.
- Generate time-limited QR codes
- Select class & subject
- Track live attendance
- End or refresh QR session
- View analytics summary
- Scan QR to mark attendance
- GPS/geofencing enforced to prevent proxy attendance
- View attendance percentage
- Subject-wise breakdown
- Alerts (low attendance warning)
- JWT-based role authentication
- Modern Flutter UI (smooth animations)
- Secure API integration
- Cross-platform mobile compatibility
- Flutter
- Dart
mobile_scanner(QR scanning)qr_flutter(QR generation)geolocator(GPS validation)shared_preferences(JWT storage)
- Express.js
- PostgreSQL
- JWT Auth
- Hosted on Render
Teacher selects class β Generates QR
|
v
Time-bound QR stored in backend
|
Student scans QR β App verifies:
- Session active?
- QR valid and not expired?
- Student inside geofence?
|
v
Backend marks attendance (PostgreSQL)
|
Both teacher & student dashboards update analytics
lib/
βββ main.dart
βββ services/
β βββ attendance_service.dart
β βββ auth_service.dart
β βββ faculty_service.dart
β βββ location_service.dart
β βββ student_analytics_service.dart
βββ shared/
β βββ screens/
β β βββ login_screen.dart
β βββ widgets/
β βββ custom_button.dart
β βββ custom_card.dart
β βββ loading_indicator.dart
βββ student_app/
β βββ screens/
β βββ home_screen.dart
β βββ qr_scanner_screen.dart
βββ teacher_app/
β βββ screens/
β βββ teacher_dashboard_screen.dart
β βββ qr_display_screen.dart
βββ utils/
βββ constants.dart
βββ responsive.dart
βββ theme.dart
A technical Flutter developer README is available at:
/frontend/DEVELOPER_README.md
git clone https://github.com/codemacUT/smart-attendee-sih-app
cd smart-attendee-sih-app/frontend
flutter pub get
flutter runTo switch backend URL, edit:
lib/utils/constants.dart
Here is a quick overview of the available REST API endpoints. For full request/response JSON payloads, please refer to the detailed Backend API Documentation.
POST /auth/loginβ Authenticate student/faculty & get JWT.GET /auth/profileβ Fetch authenticated user profile.
POST /attendance/generate-qrβ Create a new attendance session & generate QR.POST /attendance/end-sessionβ End current attendance session.GET /attendance/session/:id/statsβ Get present/absent breakdown for a session.
POST /attendance/mark-attendanceβ Mark attendance after QR scan & geolocation validation.
GET /analytics/facultyβ Get class-wise & subject-wise analytics for faculty.GET /analytics/studentβ Get personal attendance stats for a student.
What started as a frontend-focused hackathon contribution evolved into a complete full-stack undertaking. My contributions include:
Frontend (Flutter):
- Architected and developed the complete mobile application for both Student and Faculty roles.
- Implemented complex device-native features including QR scanning workflows and GPS/Geofencing validation.
- Built a premium, fully responsive UI/UX featuring staggered animations, Shimmer loaders, and dynamic Dark/Light modes.
Backend (Express.js & PostgreSQL):
- While the initial backend skeleton was a team effort, I took ownership to completely re-architect and expand the REST API.
- Engineered robust session management (e.g., dynamic QR session refreshing without data duplication).
- Deployed and currently maintain the live database and Express server on Render.
MIT License
Utkarsh Tiwari
GitHub: https://github.com/codemacUT














