Task: Attendance Tracking App with Fingerprint Authentication
*Description:*
Develop a simple *Flutter-based Attendance Tracking App* that enables users to log
their attendance (check-in and check-out) securely using *Fingerprint
Authentication. The app will store attendance data locally using **SQLite* and
provide reminders for users to mark their attendance.
---
* ###Features*
.1* ####Login Screen*
*Functionality*:
Users log in using a *username* and *password* (stored securely in the local
database).
After the initial login, users stay logged in unless they explicitly log out or reinstall
the app.
Enable *Fingerprint Authentication* as an optional method for login after successful
initial access.
.2* ####Attendance Tracking*
*Main Features*:
A screen with two buttons:
*Check-In*: For logging attendance.
*Check-Out*: For marking end-of-day attendance.
Attendance logs must capture *date and time* accurately and save them in the local
database.
Display attendance logs in a *table format*, showing check-in and check-out records
for each day.
Restrict attendance to one *check-in and check-out* per day.
.3* ####Background Service*
*Reminder Notifications*:
Implement a *background service* that sends daily reminders to mark attendance.
Default reminder time is *8:00 AM*, but users can modify the reminder time via app
settings.
Notifications must work even when the app is closed or not running in the
foreground.
.4* ####Local Database*
*Storage*:
Use *SQLite* to store user data and attendance logs.
Store information such as:
Username
Date and time of attendance (check-in/check-out).
.5* ####User-Friendly UI*
*Design*:
Create a *simple and intuitive interface*.
Use either *Material Design* (Android) or *Cupertino Design* (iOS) to align with the
device’s platform aesthetics.
.6* ####Fingerprint Authentication*
*Mandatory Authentication*:
Use Fingerprint Authentication to confirm attendance actions (check-in/check-out).
Ensure smooth and secure authentication.
---
* ###Requirements*
The app must be free of bugs and work seamlessly on both *Android* and *iOS*
devices.
Use *Provider* or *Bloc* for state management.
Write clean, maintainable code with detailed *comments*.
---
* ###Submission Deadline*
Estimated work hours: *20 hours*.
Final submission: *Sunday, January 26, 2025, at 10:00 AM*.
---
* ###Bonus Features (Optional)*
*Performance Optimization*:
Use *Hive* instead of SQLite for improved performance.
Implement *lazy loading* for attendance logs to optimize memory usage.
Apply *caching mechanisms* for smoother user experience.
*Advanced UI Enhancements*:
Design an elegant and modern UI using *Flutter Animations*.
*Analytics and Reporting*:
Add daily/weekly reports summarizing attendance statistics.
---
* ###Performance and Best Practices*
* ####Performance Optimization*
Use efficient *data structures* and *algorithms* to improve app speed.
Implement *lazy loading* in the attendance log to reduce memory consumption.
Use *caching* to reduce database calls and improve app responsiveness.
* ####Design Patterns*
Apply a suitable *mobile design pattern*, such as:
*Model-View-Controller (MVC)*
*Model-View-Presenter (MVP)*
*Model-View-ViewModel (MVVM)*
Document the chosen design pattern and justify its use.
* ####State Management*
Use one of the following state management solutions:
*Provider*
*Bloc*
Include documentation on how state is managed.
* ####Special Cases*
Ensure the background service works correctly even after the device restarts.
Optimize battery and memory usage for background services.
Handle potential errors, such as:
*Internet connectivity issues*.
*Fingerprint authentication failure*.
---
* ###Suggested Tools*
*Flutter*: For cross-platform development.
*Dart*: Programming language.
*Workmanager* or *flutter_background_service*: For background services.
*flutter_local_notifications*: To manage notifications.
*SharedPreferences* or *Hive*: For local storage.
*Provider* or *Bloc*: For state management.
---
* ###Evaluation Criteria*
*Code Quality*:
Clean, organized, and maintainable code with best practices.
*Functionality*:
Reliable performance of login, attendance tracking, and fingerprint authentication.
*Background Service*:
Accurate and consistent reminder notifications.
*UI/UX Design*:
User-friendly and visually appealing design.
*Error Handling*:
Effective management of errors and edge cases.
*Documentation*:
Clear and comprehensive documentation.
By incorporating these structured points and optional enhancements, the app will
stand out for both functionality and performance.