{"id":39730793,"url":"https://github.com/abedputra/attendance-qr-flutter-app","last_synced_at":"2026-01-18T11:00:55.779Z","repository":{"id":332869093,"uuid":"1135047183","full_name":"abedputra/Attendance-QR-Flutter-App","owner":"abedputra","description":"A comprehensive Flutter mobile application for employee or student attendance tracking using QR codes. This app works seamlessly with the [Attendance with QR Code WordPress Plugin](https://github.com/abedputra/Attendance-QR-Plugin-Wordpress) to provide a complete attendance management solution.","archived":false,"fork":false,"pushed_at":"2026-01-15T23:48:16.000Z","size":851,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-16T02:59:39.789Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abedputra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-15T15:09:36.000Z","updated_at":"2026-01-15T23:48:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/abedputra/Attendance-QR-Flutter-App","commit_stats":null,"previous_names":["abedputra/attendance-qr-flutter-app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/abedputra/Attendance-QR-Flutter-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abedputra%2FAttendance-QR-Flutter-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abedputra%2FAttendance-QR-Flutter-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abedputra%2FAttendance-QR-Flutter-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abedputra%2FAttendance-QR-Flutter-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abedputra","download_url":"https://codeload.github.com/abedputra/Attendance-QR-Flutter-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abedputra%2FAttendance-QR-Flutter-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28535156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-18T11:00:34.557Z","updated_at":"2026-01-18T11:00:55.721Z","avatar_url":"https://github.com/abedputra.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1536\" height=\"1024\" alt=\"Attendance Qr Code Plugin WP and Flutter App\" src=\"https://github.com/user-attachments/assets/2b484743-ea9c-4fc2-82af-019d0dfd38c7\" /\u003e\n\n# Attendance with QR Code - Flutter Mobile App\n\n[![Flutter](https://img.shields.io/badge/Flutter-3.35.5-blue.svg)](https://flutter.dev/)\n[![Dart](https://img.shields.io/badge/Dart-3.9.2-blue.svg)](https://dart.dev/)\n[![License](https://img.shields.io/badge/License-GPL%20v2%2B-blue.svg)](https://www.gnu.org/licenses/gpl-2.0)\n[![Platform](https://img.shields.io/badge/Platform-Android%20%7C%20iOS-lightgrey.svg)](https://flutter.dev/)\n\nA comprehensive Flutter mobile application for employee or student attendance tracking using QR codes. This app works seamlessly with the [Attendance with QR Code WordPress Plugin](https://github.com/abedputra/Attendance-QR-Plugin-Wordpress) to provide a complete attendance management solution.\n\n## 📋 Table of Contents\n\n- [Features](#-features)\n- [Screenshots](#-screenshots)\n- [Requirements](#-requirements)\n- [Installation](#-installation)\n- [Quick Start](#-quick-start)\n- [Usage](#-usage)\n- [Project Structure](#-project-structure)\n- [Building the App](#-building-the-app)\n- [WordPress Plugin Integration](#-wordpress-plugin-integration)\n- [Technical Details](#-technical-details)\n- [Contributing](#-contributing)\n- [Support](#-support)\n- [License](#-license)\n\n## ✨ Features\n\n### Core Features\n- **QR Code Scanning**: Fast and accurate QR code scanning for attendance check-in/check-out\n- **Check-In/Check-Out**: Simple one-tap attendance recording\n- **GPS Location Tracking**: Automatic location recording for attendance verification\n- **Location Accuracy Indicator**: Real-time GPS accuracy display\n- **Offline Support**: Local database storage for offline access\n- **Attendance History**: View all attendance records locally\n- **Settings Management**: Easy configuration of server URL and security key\n- **QR Code Setup**: Scan QR code for one-time configuration\n- **Server-Side Time**: Date and time determined by server (prevents time manipulation)\n- **Error Handling**: Comprehensive error handling with user-friendly messages\n\n### User Experience\n- **Modern UI**: Clean and intuitive Material Design interface\n- **Splash Screen**: Professional splash screen on app launch\n- **Progress Indicators**: Visual feedback during API calls\n- **Alert Dialogs**: Clear success and error notifications\n- **Permission Management**: Automatic handling of camera and location permissions\n- **Responsive Design**: Optimized for various screen sizes\n\n### Security Features\n- **Security Key Authentication**: Secure API communication\n- **Server-Side Validation**: All attendance data validated on server\n- **Time Zone Support**: Accurate time tracking based on server timezone\n- **Input Validation**: Client-side and server-side validation\n- **Secure Storage**: Local database with encrypted storage\n\n## 📱 Screenshots\n\n### Main Features\n- **Splash Screen**: Welcome screen with app branding\n- **Main Menu**: Easy access to all features\n- **Check-In/Check-Out**: Simple attendance recording\n- **Settings**: Configure server connection\n- **Reports**: View attendance history\n- **About**: App information and version\n\n## 📦 Requirements\n\n### Development Requirements\n- **Flutter SDK**: 3.35.5 or higher\n- **Dart SDK**: 3.9.2 or higher\n- **Android Studio** / **VS Code** with Flutter extensions\n- **Android SDK**: API level 21 or higher (for Android development)\n- **Xcode**: Latest version (for iOS development, macOS only)\n\n### Runtime Requirements\n- **Android**: 5.0 (API 21) or higher\n- **iOS**: 12.0 or higher\n- **Permissions**:\n  - Camera (for QR code scanning)\n  - Location (for GPS tracking)\n  - Internet (for API communication)\n\n### Backend Requirements\n- **WordPress Plugin**: [Attendance with QR Code WordPress Plugin](https://github.com/your-repo/attendance-with-qr-code-wordpress) must be installed and configured\n- **WordPress Site**: Accessible WordPress installation with the plugin activated\n- **API Endpoint**: WordPress plugin API endpoint must be accessible\n\n## 🚀 Installation\n\n### Prerequisites\n\n1. **Install Flutter**\n   ```bash\n   # Check Flutter installation\n   flutter --version\n   \n   # If not installed, follow: https://flutter.dev/docs/get-started/install\n   ```\n\n2. **Clone the Repository**\n   ```bash\n   git clone https://github.com/your-username/attendance-with-qr-code-wp-flutter.git\n   cd attendance-with-qr-code-wp-flutter\n   ```\n\n3. **Install Dependencies**\n   ```bash\n   flutter pub get\n   ```\n\n### Setup\n\n1. **Configure Assets**\n   - Place your app icon at `assets/icon/icon.png`\n   - Place your logo at `images/logo.png`\n\n2. **Configure App Package Name** (Optional)\n   - Edit `android/app/build.gradle` to change package name\n   - Update `applicationId` in `defaultConfig`\n\n3. **Run the App**\n   ```bash\n   # For Android\n   flutter run\n   \n   # For specific device\n   flutter devices\n   flutter run -d \u003cdevice-id\u003e\n   ```\n\n## 🎯 Quick Start\n\n### First Time Setup\n\n1. **Install the App**\n   - Build and install the APK on your Android device\n   - Or run `flutter run` for development\n\n2. **Configure Server Connection**\n   - On first launch, you'll see the setup screen\n   - Scan the QR code from WordPress plugin settings\n   - The app will automatically configure:\n     - Server URL\n     - Security Key\n   - You'll be redirected to the main menu\n\n3. **Grant Permissions**\n   - Allow camera access (for QR scanning)\n   - Allow location access (for GPS tracking)\n   - These are required for attendance functionality\n\n### Using the App\n\n1. **Check-In**\n   - Tap **Check-In** from main menu\n   - Wait for GPS location to be accurate\n   - Tap **Scan QR** button\n   - Scan your personal QR code\n   - Attendance is recorded automatically\n\n2. **Check-Out**\n   - Tap **Check-Out** from main menu\n   - Wait for GPS location to be accurate\n   - Tap **Scan QR** button\n   - Scan your personal QR code\n   - Check-out is recorded automatically\n\n3. **View Reports**\n   - Tap **Report** from main menu\n   - View all attendance records\n   - Data is stored locally and synced with server\n\n4. **Settings**\n   - Tap **Settings** from main menu\n   - Scan new QR code to update server configuration\n   - Change server URL and security key\n\n## 📖 Usage\n\n### Check-In Process\n\n1. Open the app\n2. Navigate to **Check-In** from main menu\n3. Wait for GPS accuracy indicator (recommended: \u003c 200m)\n4. Tap **Scan QR** button\n5. Point camera at your personal QR code\n6. Wait for confirmation message\n7. Attendance is recorded with:\n   - Your name\n   - Current date (from server)\n   - Current time (from server)\n   - GPS location\n   - Location accuracy\n\n### Check-Out Process\n\n1. Open the app\n2. Navigate to **Check-Out** from main menu\n3. Wait for GPS accuracy indicator\n4. Tap **Scan QR** button\n5. Point camera at your personal QR code\n6. Wait for confirmation message\n7. Check-out is recorded with:\n   - Out time (from server)\n   - GPS location\n   - Calculated work hours\n   - Overtime (if applicable)\n\n### Viewing Attendance History\n\n1. Navigate to **Report** from main menu\n2. View all locally stored attendance records\n3. Records include:\n   - Date and time\n   - Check-in/Check-out type\n   - Location information\n   - Status\n\n### Updating Settings\n\n1. Navigate to **Settings** from main menu\n2. Tap **Scan QR** button\n3. Scan the configuration QR code from WordPress admin\n4. Settings are updated automatically\n5. Return to main menu\n\n## 📁 Project Structure\n\n```\nlib/\n├── core/                          # Core functionality\n│   ├── constants/\n│   │   ├── app_constants.dart    # App constants (API paths, thresholds, etc.)\n│   │   └── app_strings.dart      # All string literals\n│   └── theme/\n│       └── app_theme.dart        # Theme configuration\n├── data/                          # Data layer\n│   ├── models/                   # Data models\n│   │   ├── attendance.dart      # Attendance model\n│   │   └── settings.dart        # Settings model\n│   └── database/                 # Local database\n│       └── db_helper.dart       # SQLite database helper\n├── services/                      # Business logic\n│   └── api_service.dart         # API service for WordPress integration\n├── presentation/                  # UI layer\n│   ├── screens/                  # App screens\n│   │   ├── main_menu_page.dart  # Main menu\n│   │   ├── attendance_page.dart # Check-in/Check-out\n│   │   ├── scan_qr_page.dart    # Initial setup\n│   │   ├── setting_page.dart    # Settings\n│   │   ├── report_page.dart     # Attendance reports\n│   │   ├── about_page.dart      # About page\n│   │   └── qr_scanner_page.dart # QR scanner widget\n│   └── utils/                    # Utilities\n│       ├── utils.dart           # Helper functions\n│       └── single_menu.dart     # Reusable menu widget\n└── main.dart                     # App entry point\n```\n\n## 🔨 Building the App\n\n### Build APK (Android)\n\n```bash\n# Build release APK\nflutter build apk --release\n\n# Build APK for specific architecture\nflutter build apk --release --target-platform android-arm64\n\n# Output location\n# build/app/outputs/flutter-apk/app-release.apk\n```\n\n### Build App Bundle (Android - for Play Store)\n\n```bash\n# Build app bundle\nflutter build appbundle --release\n\n# Output location\n# build/app/outputs/bundle/release/app-release.aab\n```\n\n### Build iOS (macOS only)\n\n```bash\n# Build iOS app\nflutter build ios --release\n\n# Or open in Xcode\nopen ios/Runner.xcworkspace\n```\n\n### Build Configuration\n\nThe app uses the following build configuration:\n- **Min SDK**: Android API 21 (Android 5.0)\n- **Target SDK**: Latest Android SDK\n- **Kotlin**: 2.1.0\n- **Gradle**: 8.7\n- **Android Gradle Plugin**: 8.6.0\n\n## 🔗 WordPress Plugin Integration\n\nThis mobile app is designed to work with the **Attendance with QR Code WordPress Plugin**.\n\n### How It Works\n\n1. **WordPress Plugin** generates QR codes for employees/students\n2. **Mobile App** scans QR codes to record attendance\n3. **API Communication** between app and WordPress server\n4. **Server-Side Processing**:\n   - Date/time calculation (prevents manipulation)\n   - Attendance validation\n   - Database storage\n   - Work hours calculation\n\n### API Endpoint\n\nThe app communicates with WordPress via:\n```\nPOST {wordpress-url}/wp-content/plugins/attendance_with_qr_code/insert-attendance.php\n```\n\n**Request Parameters:**\n- `key`: Security key (from WordPress settings)\n- `name`: Employee/student name (from QR code)\n- `q`: Command ('in' for check-in, 'out' for check-out)\n- `location`: GPS location string\n\n**Response Format:**\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"message\": \"Check-in successful!\",\n    \"date\": \"2025-01-15\",\n    \"time\": \"14:30:00\",\n    \"location\": \"Location string\",\n    \"query\": \"Check-in\"\n  }\n}\n```\n\n### Security\n\n- **Security Key**: Required for all API requests\n- **Server Validation**: All data validated on WordPress server\n- **Time Zone**: Server determines date/time based on configured timezone\n- **Input Sanitization**: All inputs sanitized before processing\n\n## 🛠️ Technical Details\n\n### Dependencies\n\n**Core:**\n- `flutter`: SDK framework\n- `dio`: HTTP client for API calls\n- `sqflite`: Local SQLite database\n- `path_provider`: File system paths\n\n**Features:**\n- `mobile_scanner`: QR code scanning\n- `geolocator`: GPS location tracking\n- `geocoding`: Reverse geocoding (address from coordinates)\n- `permission_handler`: Runtime permissions\n- `rflutter_alert`: Alert dialogs\n- `progress_dialog_null_safe`: Loading indicators\n- `font_awesome_flutter`: Icons\n\n### Architecture\n\n- **Clean Architecture**: Separation of concerns\n- **Service Layer**: API calls separated from UI\n- **Constants**: Centralized configuration\n- **Models**: Data models for type safety\n- **State Management**: setState() for state (can be upgraded to Provider/Riverpod)\n\n### Code Quality\n\n- ✅ Follows Flutter best practices\n- ✅ Dart 3.0+ null safety\n- ✅ Proper error handling\n- ✅ Code documentation\n- ✅ Linter compliant\n\n### Database Schema\n\n**Settings Table:**\n- `id`: Primary key\n- `url`: WordPress site URL\n- `key`: Security key\n\n**Attendance Table:**\n- `id`: Primary key\n- `date`: Attendance date\n- `time`: Attendance time\n- `name`: Employee/student name\n- `location`: GPS location\n- `type`: Check-in or Check-out\n\n## 🤝 Contributing\n\nContributions are welcome! Here's how you can help:\n\n### How to Contribute\n\n1. **Fork the repository**\n2. **Create a feature branch**\n   ```bash\n   git checkout -b feature/your-feature-name\n   ```\n3. **Make your changes**\n   - Follow Flutter/Dart style guide\n   - Add comments for complex logic\n   - Test your changes thoroughly\n4. **Commit your changes**\n   ```bash\n   git commit -m \"Add: Description of your feature\"\n   ```\n5. **Push to your fork**\n   ```bash\n   git push origin feature/your-feature-name\n   ```\n6. **Create a Pull Request**\n\n### Contribution Guidelines\n\n- Follow [Flutter Style Guide](https://flutter.dev/docs/development/ui/widgets-intro)\n- Follow [Dart Style Guide](https://dart.dev/guides/language/effective-dart/style)\n- Write clear commit messages\n- Test your code before submitting\n- Update documentation if needed\n- Be respectful and constructive in discussions\n\n### Areas for Contribution\n\n- 🐛 Bug fixes\n- ✨ New features\n- 📚 Documentation improvements\n- 🎨 UI/UX enhancements\n- ⚡ Performance optimizations\n- 🔒 Security improvements\n- 🌐 Localization/Internationalization\n- 🧪 Unit tests and widget tests\n\n## 📧 Support\n\n- **Developer**: Abed Putra\n- **Website**: [https://abedputra.my.id](https://abedputra.my.id)\n- **Issues**: [GitHub Issues](https://github.com/your-username/attendance-with-qr-code-wp-flutter/issues)\n\nIf you encounter any issues or have questions:\n1. Check the documentation above\n2. Search existing GitHub issues\n3. Create a new issue with detailed information\n4. Contact support through the author's website\n\n## 📄 License\n\nThis project is licensed under the GPL v2 or later.\n\n```\nCopyright (C) 2025 Abed Putra\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n```\n\n## 🙏 Credits\n\n- Built with ❤️ by [Abed Putra](https://abedputra.my.id)\n- Uses [Flutter](https://flutter.dev/) framework\n- QR Code scanning via [mobile_scanner](https://pub.dev/packages/mobile_scanner)\n- Icons from [Font Awesome](https://fontawesome.com/)\n- Location services via [geolocator](https://pub.dev/packages/geolocator)\n\n## 📚 Related Projects\n\n- **WordPress Plugin**: [Attendance with QR Code WordPress Plugin](https://github.com/abedputra/Attendance-QR-Plugin-Wordpress)\n  - Required backend for this mobile app\n  - Handles server-side attendance processing\n  - Provides admin interface for attendance management\n\n## 📝 Changelog\n\n### Version 1.0.0\n- Initial release\n- QR code scanning for attendance\n- Check-in/Check-out functionality\n- GPS location tracking\n- Local database storage\n- WordPress plugin integration\n- Settings management\n- Attendance history\n- Modern Material Design UI\n- Comprehensive error handling\n- Server-side time validation\n- Security key authentication\n\n## 🚀 Getting Started for Developers\n\n### Prerequisites\n- Flutter SDK 3.35.5+\n- Dart SDK 3.9.2+\n- Android Studio / VS Code\n- Git\n\n### Setup Steps\n\n1. **Clone Repository**\n   ```bash\n   git clone https://github.com/your-username/attendance-with-qr-code-wp-flutter.git\n   cd attendance-with-qr-code-wp-flutter\n   ```\n\n2. **Install Dependencies**\n   ```bash\n   flutter pub get\n   ```\n\n3. **Run the App**\n   ```bash\n   flutter run\n   ```\n\n4. **Build APK**\n   ```bash\n   flutter build apk --release\n   ```\n\n### Development Tips\n\n- Use `flutter analyze` to check code quality\n- Use `flutter test` to run tests\n- Check `analysis_options.yaml` for linting rules\n- Follow the project structure for new features\n\n---\n\n**Made with ❤️ for efficient attendance management**\n\nFor more information, visit [https://abedputra.my.id](https://abedputra.my.id)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabedputra%2Fattendance-qr-flutter-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabedputra%2Fattendance-qr-flutter-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabedputra%2Fattendance-qr-flutter-app/lists"}