UniTrack is an Android application designed to help students organize and manage their academic activities in a structured and practical way. The app focuses on reducing manual effort involved in tracking attendance, remembering class schedules, planning study sessions, and managing short-term academic tasks.
Instead of acting as a simple checklist app, UniTrack combines background automation, reminders, and cloud sync to handle repetitive academic workflows with minimal user interaction.
Students often rely on multiple apps or manual notes to track attendance, marks, schedules, and study plans. UniTrack brings these into a single system where most routine actions (such as attendance marking, task cleanup, and reminders) happen automatically in the background.
The goal is not just to store data, but to reduce the cognitive load of managing academic routines.
-
Course Management
Add and manage courses with schedule, timings, faculty details, attendance tracking, and internal marks. -
Attendance Tracking
Attendance is updated daily based on course schedules using background workers, with user control to mark absences when required. -
Study Planner
Create time-based study sessions for specific courses and topics. Sessions are automatically cleared after their due time. -
Quick Tasks
Lightweight tasks for short-term reminders, automatically removed after a fixed duration. -
Class Reminders
Class alarms can be enabled per course, with a global setting to control how many minutes before the class the reminder should trigger. -
Settings & Preferences
Manage notification preferences, alarm timing, appearance settings, and account-related actions from a dedicated settings screen.
- Language: Kotlin
- UI: Jetpack Compose (Material 3)
- Architecture: MVVM
- Authentication: Firebase Authentication
- Database: Firebase Firestore
- Background Processing: WorkManager
- Reminders & Alerts: Alarm Manager + Notifications
- Local Preferences: DataStore
Below are screenshots of the current implementation of UniTrack. All screens shown correspond to features that are fully implemented in the app.
The main dashboard providing quick access to courses, tasks, and study plans.
List of all added courses with attendance and quick navigation.
Detailed view of a course showing attendance records, marks, and alarm controls.
Course creation screen including schedule, timings, and attendance configuration.
Study planner screen with an empty state and bottom sheet used to add a new study session.
Settings screen used to control alarms, notification behavior, appearance, and account-related actions.
UniTrack relies heavily on background processing to reduce manual work for the user. Several features are intentionally designed to work without requiring the app to be opened daily.
-
Quick Task Cleanup
Short-term tasks are automatically removed after a fixed duration using WorkManager, preventing clutter without user intervention. -
Study Planner Cleanup
Study sessions are time-bound. Once a session crosses its due time, it is automatically removed using a one-time background worker. -
Daily Attendance Update
Attendance is updated daily based on the course schedule. If a class is scheduled for the day, attendance is marked automatically in the background.
All background work is scheduled in a way that respects Android system constraints and does not rely on the app being open in the foreground.
UniTrack separates reminders into two different categories to avoid unnecessary alerts:
-
Class Alarms
Class reminders are handled using Alarm Manager for exact-time alerts. Alarms can be enabled or disabled per course, and also require a global setting to be enabled. -
Study Planner Notifications
Daily study reminders are delivered as notifications rather than alarms, ensuring they are informative without being disruptive.
Users can control how many minutes before a class the reminder should trigger, and alarms are scheduled or cancelled dynamically when settings change.
Instead of keeping all user-generated data indefinitely, UniTrack follows a lifecycle-based data approach:
- Quick tasks expire automatically
- Study sessions are removed after their due time
- Attendance is updated daily instead of manually tracked
This keeps the data relevant, prevents performance degradation over time, and ensures that the app remains lightweight even with prolonged usage.
The UI is built entirely using Jetpack Compose with Material 3 components. Key design choices include:
- Bottom sheets instead of traditional dialog boxes for better flow
- Clear empty states to guide first-time users
- Minimal input screens with sensible defaults
- Settings grouped by intent (alarms, preferences, account)
The app prioritizes clarity and ease of use over excessive customization.
UniTrack uses only required permissions and requests them contextually:
- Notification permission for reminders
- Exact alarm permission only when class alarms are enabled
Permissions are requested at the point of use rather than during app launch, to avoid overwhelming the user.
- UI Layer: Jetpack Compose screens
- State Management: ViewModels with observable state
- Data Layer: Firebase Firestore + DataStore
- Background Layer: WorkManager workers
- System Services: Alarm Manager and Notifications
The project follows a clear separation of concerns to keep features isolated and maintainable as the app grows.
- Offline-first sync is limited and depends on Firebase availability
- Attendance logic assumes consistent class schedules
- Advanced analytics are intentionally kept minimal
These trade-offs were made to keep the app focused and reliable for daily use.
UniTrack is actively evolving and was built with extensibility in mind. The current implementation reflects practical design choices rather than feature inflation.
Thanks to my friends, family and everyone who supported and motivated me throughout the development of this project.






