Task Rapid is a mobile assistant app that keeps track of the user's tasks. This was developed with Kotlin for the Mobile Computing (521045S) course at the University of Oulu.
- Android Studio 2021.2.1 (Chipmunk)
- Android SDK 11.0 (API Level 30)
- Kotlin
- Canva (for graphics)
The app was implemented as a combination of 4 homework assignments, each containing different feature requirements.
https://github.com/chubozeko/TaskRapid/releases/tag/v0.0.1
Required Features
- Created UI layouts and Navigation between Pages
- Login
- Home
- Add Task
- Sign Up
- View Profile
- Edit Profile
- Login page
- A user can login to the app, with the User Profile credentials stored with SharedPreferences
- Home page
- Task Type Tabs
- List of Tasks (using LazyColumn)
- TopAppBar with “View Profile” button
- Add Task page
- Contains the main properties of a task (layout only)
- Accessed when the user clicks on the FAB in the Home page
Additional Features (for bonus points)
- Account Creation (Sign Up page)
- The user can create an account on the Sign Up page.
- These credentials are stored in
SharedPreferences
.
- User Profile (View Profile & Edit Profile)
- The user can view and edit their profile.
Challenges / Problems / Bugs
- Scrollability
- Struggled to make the pages scrollable using Jetpack Compose, so I just resized everything to fit on one screen.
- Using
SharedPreferences
to store credentials- Not the best solution to store credentials, since it would only store them on the device itself rather than an external, encrypted database.
- Editing User Profile
- Toast messages that were used for debugging should not appear when saving the changes to the Profile (business logic fix)
- Dark Mode
- Fix colours used in Dark Mode for better visibility
https://github.com/chubozeko/TaskRapid/releases/tag/v0.0.2
Required Features
- Add Task = page used for adding a new task
- Task Name
- Task Description
- Task Date & Time
- Task Type
- Task Icon
- Edit Task = page used to update the selected task
- Similar layout to Add Task, but with previously loaded task details
- Updated Task List Items
- Used
ConstraintLayout
to design task list item layout - Added swipeable actions
- Used
- Used
Room
Database to store Task and TaskType details. - Added a Date and Time Picker for assigning a date and time to a task
- Changed Task Types according to importance/priority:
- Crucial
- High
- Medium
- Low
Additional Features (for bonus points)
- Select a Task Icon
- The user can select an icon that represents their task in the Add Task and Edit Task pages.
- This icon can be seen in the task list on the Home page.
- Swipeable List Item
- The user can swipe the task list item to perform Task actions:
- Swipe Right = Mark Task as Complete/Incomplete
- Swipe Left = Delete the Task
- The user can swipe the task list item to perform Task actions:
Challenges / Problems / Bugs
- Using
Room
to store task icons- Tried to implement the task icon list like the TaskDao and TaskTypeDao, but struggled to save the Material Icons (
ImageVector
) in the Room database. - Resolved by “hard-coding” the TaskIcon objects without Room.
- Tried to implement the task icon list like the TaskDao and TaskTypeDao, but struggled to save the Material Icons (
- Implementing the Date & Time Pickers
- Spent a while parsing the task dates and times in order to properly store them
- View Task page
- Planned to add a View Task page that shows the details of the selected task, but there were issues with loading the task details due to its asynchronous nature (displays
null
values). - Opted to use the Edit Task page to view the current task details that could be edited.
- Planned to add a View Task page that shows the details of the selected task, but there were issues with loading the task details due to its asynchronous nature (displays
https://github.com/chubozeko/TaskRapid/releases/tag/v0.0.3
Required Features
- Added a Task Notification with options when a Task has a specified date and time
- At Task Time
- 5 minutes before Task
- 10 minutes before Task
- 15 minutes before Task
- 30 minutes before Task
- 45 minutes before Task
- 1 hour before Task
- Added Bell icon for Tasks with notifications in Task list
- Integrated Maps API to add a location to the Task
- Latitude
- Longitude
Challenges / Problems / Bugs
- Scheduling Task Notifications with
Work Manager
- Struggled to schedule the upcoming tasks that have notifications activated
- Possible solution: using the
AlarmManager
- Incomplete implementation with Location
- Unable to implement the Location-based capabilities in time (i.e. show a notification when the user is nearby the upcoming Task’s location)
- Duplicate Pin markers if multiple locations were selected (only the last selected location got saved)