Skip to content

Latest commit

Β 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ Smart Attendee β€” Smart India Hackathon App (SIH 2025)

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.


πŸ”— Demo Credentials (For Testing)

These demo accounts are safe and only expose sample data.

πŸ‘©β€πŸ« Faculty Login

  • Email: faculty1@example.com
  • Password: faculty123

πŸ‘¨β€πŸŽ“ Student Login

  • Email: student1@example.com
  • Password: student123

🎯 The Problem (SIH 2025 Case Study)

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.


πŸ“² App Preview (Premium Dark Mode)

πŸ” Authentication & Demo Access

Β Β Β Β 

πŸ‘¨β€πŸŽ“ Student Dashboard & QR Scanner

Β Β Β Β 

πŸ‘©β€πŸ« Teacher Dashboard & QR Generation

Β Β Β Β 

πŸ“Š Session Complete Summary


πŸŽ₯ Demo Video

A full video tutorial showing:

  • Login
  • Teacher QR generation
  • Student QR scanning
  • Attendance verification
  • Analytics overview
Smart_Attendee_appflow.mov

🎨 UI/UX Evolution (Before & After)

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 Shimmer effects 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.

🧠 Features

πŸ‘©β€πŸ« Teacher Module

  • Generate time-limited QR codes
  • Select class & subject
  • Track live attendance
  • End or refresh QR session
  • View analytics summary

πŸ‘¨β€πŸŽ“ Student Module

  • Scan QR to mark attendance
  • GPS/geofencing enforced to prevent proxy attendance
  • View attendance percentage
  • Subject-wise breakdown
  • Alerts (low attendance warning)

πŸ” Shared Features

  • JWT-based role authentication
  • Modern Flutter UI (smooth animations)
  • Secure API integration
  • Cross-platform mobile compatibility

πŸ› οΈ Tech Stack

Frontend β€” Developed by Utkarsh Tiwari

  • Flutter
  • Dart
  • mobile_scanner (QR scanning)
  • qr_flutter (QR generation)
  • geolocator (GPS validation)
  • shared_preferences (JWT storage)

Backend β€” Team

  • Express.js
  • PostgreSQL
  • JWT Auth
  • Hosted on Render

βš™οΈ System Architecture

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

πŸ“ Project Structure (Frontend)

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

πŸ“‘ Running the App Locally

git clone https://github.com/codemacUT/smart-attendee-sih-app
cd smart-attendee-sih-app/frontend
flutter pub get
flutter run

To switch backend URL, edit:

lib/utils/constants.dart

πŸ”Œ API Documentation

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.

πŸ” Authentication

  • POST /auth/login β€” Authenticate student/faculty & get JWT.
  • GET /auth/profile β€” Fetch authenticated user profile.

πŸ§‘β€πŸ« Faculty Attendance Controls

  • 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.

πŸ‘¨β€πŸŽ“ Student Attendance

  • POST /attendance/mark-attendance β€” Mark attendance after QR scan & geolocation validation.

πŸ“Š Analytics

  • GET /analytics/faculty β€” Get class-wise & subject-wise analytics for faculty.
  • GET /analytics/student β€” Get personal attendance stats for a student.

πŸ‘¨β€πŸ’» My Contribution & Project Ownership

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.

πŸ“„ License

MIT License


πŸ‘₯ Developed By

Utkarsh Tiwari
GitHub: https://github.com/codemacUT

About

Smart Attendee is a geofencing + QR based attendance management system built for Smart India Hackathon. Includes separate teacher & student flows, time-bound QR sessions, location validation, analytics, and full backend integration (Express.js + PostgreSQL).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages