FCI Attendance is an Android application designed to simplify the process of student attendance tracking using QR codes. The application is built on the Google Cloud Project and uses the Google Sheets API for real-time tracking without the need for a server.
- Track attendance records in a user-friendly interface.
- Export attendance records to a CSV file.
- Delete specific attendance records.
- Persist data across app launches.
- Asynchronous data handling with Kotlin Coroutines.
- Native-level performance with Android NDK.
Attendance.mp4
-
Google Cloud Project: The application is built on a Google Cloud Project. Make sure to create a credential for the Android application with the SHA1 and the package name to ensure the application works without any issues.
-
QR Generation: The QR codes for the students are generated using Python, pandas, and qrcode. The data in the QR code is encrypted using the AES algorithm. The same key and IV used for encryption are used for decryption in the Android application.
-
Android Application: The Android application reads the QR code using the Google code scanner and decrypts the data using Bouncy Castle cryptography. The decrypted data is then sent to the Google Sheets using the Google Sheets API.
- Kotlin - The main programming language used.
- Java - Used in some parts of the project.
- C - Used in some parts of the project.
- Python - Used to generate the QR codes for each student and create the Excel file with the QRs.
- JavaScript - Used on the Apps Script of the registration form to add the verified responses to the specific sheets they want.
- AndroidX Core KTX - Provides Kotlin extensions for Android framework APIs.
- AppCompat - Provides backward-compatible versions of Android framework APIs.
- Material Components - Material design components for Android.
- ConstraintLayout - Allows you to create large and complex layouts with a flat view hierarchy.
- Kotlinx Coroutines - Library support for Kotlin coroutines.
- Hilt - Dependency injection library built on top of Dagger.
- Room - Provides an abstraction layer over SQLite to allow for more robust database access.
- Lifecycle ViewModel KTX - Provides Kotlin extensions for ViewModel component.
- Lifecycle LiveData KTX - Provides Kotlin extensions for LiveData component.
- Fragment KTX - Provides Kotlin extensions for Fragment component.
- Navigation Component - Android Jetpack's Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
- Google Play Services Code Scanner - Provides APIs to help you implement Google Play services code scanning features in your app.
- EasyPermissions - Simplifies Android permissions.
- Google Sheets API - Read, write, and format data in Sheets.
- Google Play Services Auth - Provides APIs to help you implement Google Sign-In and other features.
- Google HTTP Client Android - Simplifies the process of connecting to and making requests to Google APIs on Android.
- Google API Client Android - Simplifies the process of connecting to and making requests to Google APIs on Android.
- AndroidX Work Runtime KTX - Provides Kotlin extensions for WorkManager.
- AndroidX Security Crypto KTX - Provides Kotlin extensions for AndroidX Security Crypto.
- Bouncy Castle - A collection of APIs used in cryptography, it allows for encryption and decryption of data.
- Gson - A Java serialization/deserialization library to convert Java Objects into JSON and back.
- Barcode Scanning - Allows your app to read barcodes of all kinds.