A modern, efficient, and secure attendance management system built with Flutter that leverages QR code technology for quick and accurate attendance tracking.
- QR Code Scanning: Instant attendance marking through QR code scanning
- Real-time Sync: Live attendance data synchronization across all devices
- Role-based Access: Separate interfaces for students, teachers, and administrators
- Offline Support: Work offline with automatic sync when connection is restored
- Analytics Dashboard: Comprehensive attendance reports and insights
- Secure Authentication: Supabase Auth with Row Level Security (RLS)
- Cross-platform: Runs seamlessly on Web, Android and iOS devices
- Frontend: Flutter & Dart
- Backend: Supabase (PostgreSQL database, Authentication, Real-time subscriptions)
- State Management: BLoC (Business Logic Component)
- QR Code: qr_code_scanner, qr_flutter
- Local Storage: SharedPreferences
- Architecture: Clean Architecture with Repository Pattern
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Android Studio / VS Code
- Git
-
Clone the repository
git clone https://github.com/hasanravda/qr-smart-attendance.git cd qr-smart-attendance -
Install dependencies
flutter pub get
-
Set up Supabase
- Create a new project at supabase.com
- Copy your project URL and anon key
- Create a
.envfile in the root directory:
SUPABASE_URL=your_supabase_project_url SUPABASE_ANON_KEY=your_supabase_anon_key
-
Set up the database
- Run the SQL scripts from
/databasefolder in your Supabase SQL editor - This will create necessary tables and functions
- Run the SQL scripts from
-
Run the app
flutter run
Create a .env file with the following variables:
SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_keyUpdate pubspec.yaml with required permissions for camera access:
Android (android/app/src/main/AndroidManifest.xml):
<uses-permission android:name="android.permission.CAMERA" />iOS (ios/Runner/Info.plist):
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan QR codes for attendance</string>Run tests using:
# Unit tests
flutter test
# Integration tests
flutter test integration_test/flutter build apk --releaseflutter build ios --release- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
If you encounter any issues or need support:
- Check existing Issues
- Create a new issue with detailed description
- ✅ Core attendance functionality
- ✅ User authentication
- ✅ QR code generation and scanning
- ✅ Real-time data sync
- 🚧 Advanced analytics (In Progress)
- 📋 Multi-language support (Planned)
- 📋 Push notifications (Planned)
Made with ❤️ by Hasan using Flutter