Skip to content

A modern QR-based attendance management system built with Flutter and Supabase. Features real-time attendance tracking, role-based access control, and analytics with BLoC state management.

Notifications You must be signed in to change notification settings

hasanravda/QR-Smart-Attendance

Repository files navigation

QR Smart Attendance System

A modern, efficient, and secure attendance management system built with Flutter that leverages QR code technology for quick and accurate attendance tracking.

🚀 Features

  • 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

🛠️ Technology Stack

  • 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

🚀 Getting Started

Prerequisites

  • Flutter SDK (>=3.0.0)
  • Dart SDK (>=3.0.0)
  • Android Studio / VS Code
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/hasanravda/qr-smart-attendance.git
    cd qr-smart-attendance
  2. Install dependencies

    flutter pub get
  3. Set up Supabase

    • Create a new project at supabase.com
    • Copy your project URL and anon key
    • Create a .env file in the root directory:
    SUPABASE_URL=your_supabase_project_url
    SUPABASE_ANON_KEY=your_supabase_anon_key
  4. Set up the database

    • Run the SQL scripts from /database folder in your Supabase SQL editor
    • This will create necessary tables and functions
  5. Run the app

    flutter run

🔧 Configuration

Environment Variables

Create a .env file with the following variables:

SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key

Flutter Configuration

Update 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>

🧪 Testing

Run tests using:

# Unit tests
flutter test

# Integration tests
flutter test integration_test/

📦 Build & Release

Android APK

flutter build apk --release

iOS IPA

flutter build ios --release

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

🐛 Issues & Support

If you encounter any issues or need support:

  • Check existing Issues
  • Create a new issue with detailed description

📈 Project Status

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

About

A modern QR-based attendance management system built with Flutter and Supabase. Features real-time attendance tracking, role-based access control, and analytics with BLoC state management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published