EduTrack is a modern, secure, and location-aware attendance tracking application designed for educational institutions. Powered by Flutter and Firebase, it enables teachers to host geofenced attendance sessions and allows students to register their attendance using GPS location verification and anti-spoofing face liveness detection.
The production assets of this project are automatically built and deployed live: 👉 Try the Web Demo Live!
Note: On the Web demo, the mobile-only ML-based face liveness verification is simulated using a mock verification dialog, allowing recruiters and developers to test the full attendance flow directly in the browser.
- Secure Logins: Distinct sign-in and sign-up flows for both Students and Teachers managed by Firebase Authentication.
- Persistent Sessions: Automated session restoration using a local
ThemeControllerand persistent auth states.
- Subject Management: Create courses, generate unique enrollment codes, and track classes.
- Geofenced Sessions: Start attendance sessions with a custom duration. The system automatically records the teacher's current GPS coordinates as the session anchor.
- Smart Communications: Send announcements targeted to:
- All registered students.
- Students enrolled in a specific subject.
- A single individual student.
- Attendance Insights: View real-time student lists, enrollment details, and detailed attendance log analytics.
- Subject Enrollment: Join classes securely using join codes generated by teachers.
- Location-Verified Attendance: Mark attendance for active sessions. The app calculates the distance between the student's device and the teacher's anchor coordinates using the
Geolocatorplugin (restricting check-ins to a 20-meter range). - Anti-Spoofing Verification:
- Liveness Detection: Utilizes front camera video streams and facial movement recognition (such as eye-blinks) to prevent photo/video spoofing.
- Face Detection: Uses Google's ML Kit to detect and verify faces locally.
- Inbox & Notifications: Receive real-time announcements from course instructors.
- Visual Analytics: View detailed personal attendance percentages and statistics per subject.
- Frontend Framework: Flutter (Channel Stable, 3.41.5+)
- Backend Database: Cloud Firestore
- User Management: Firebase Authentication
- Device Sensors & Core Plugins:
geolocator: High-accuracy GPS location tracking.camera: Camera feed controllers for liveness check.google_mlkit_face_detection: Native face landmark and classification detection.smart_liveliness_detection: Anti-spoofing challenge generator.provider: App-wide state and theme controllers.
- CI/CD Integration: GitHub Actions automated pipeline to build and deploy static web files to the
gh-pagesbranch.
lib/
├── constants/ # Application-wide styles and static assets
├── core/
│ └── theme/ # App design tokens (Light/Dark themes & ThemeController)
├── features/
│ ├── auth/ # Login, Sign Up, and role-routing screens
│ ├── home/ # Main navigation and structure
│ ├── student/ # Dashboards, inbox, camera, and verification flows
│ └── teacher/ # Dashboards, subject creation, and announcements
├── models/ # Data models (User, Subject, Session, Attendance)
├── services/
│ ├── auth_service.dart # Firebase Auth requests wrapper
│ ├── firestore_service.dart # Firestore CRUD operations wrapper
│ └── location_service.dart # GPS coordinates and geofence verification
└── firebase_options.dart # Automatically resolved Firebase credentials
- Install Flutter SDK (stable channel).
- Install Android Studio or VS Code.
- Configure a Firebase Project in the Firebase Console.
-
Clone the Repository:
git clone https://github.com/ohnogaurav/EduTrack.git cd EduTrack -
Install Dependencies:
flutter pub get
-
Configure Firebase:
- For Android: Place your
google-services.jsoninside theandroid/app/folder. - For iOS: Place your
GoogleService-Info.plistinside theios/Runner/folder. - For Web & Global configuration: Install the FlutterFire CLI and run:
flutterfire configure
- For Android: Place your
-
Run the Application:
- Local mobile emulator / connected device:
flutter run
- Local Web Browser:
flutter run -d chrome
- Local mobile emulator / connected device:
This project includes a pre-configured GitHub Actions workflow located at .github/workflows/deploy.yml.
On every push to master or main:
- The codebase is checked out.
- The Flutter build environment is initialized.
- A production release is compiled for the Web using:
flutter build web --release --base-href="/${{ github.event.repository.name }}/" - The output assets are committed and deployed directly to the
gh-pagesbranch.