Introduction
AchieveMentor is an original iOS application programmed solely by myself, Ethan Wert, as a personal project. I envisioned AchieveMentor in late 2019 as a potential productivity app concept, and it only grew from there. AchieveMentor is a to-do-list-style application that “gamifies” productivity. By making everyday tasks more like a video game, people begin to enjoy them, and even look forward to completing them. This app uses a “streak” system where users gain points for keeping streaks with different tasks.
I decided to center the app around Dr. Maxwell Maltz’s 21/90 rule of productivity. This is a rule that I have applied in my own life and have had great success with. Generally speaking, this rule states that it takes 21 days to make a habit, and 90 days to make a permanent lifestyle change. This app motivates users to reach these goals alongside the streak-based score system by “upgrading” the task badges as the streak increases.
This app is constantly growing and changing, and hopefully, it will be available on the App Store in the near future.
Methodology
AchieveMentor is built using Apple’s SwiftUI framework and is primarily programmed in Swift. SwiftUI is best suited to a Model-View-ViewModel (MVVM) architecture for app development. In MVVM, logic and data are separated from views allowing for more concise programming. As such, AchieveMentor is structured using MVVM. In addition to this, AchieveMentor uses Apple’s CoreData object graph and persistence framework to save user data in an application.
The App
The main page of AchieveMentor is a view of all the user’s tasks as shown here. At the top, the app states hello to the user as a friendly welcome to the application. In the body of the front page, there is the main area that hosts all the task icons. Here we can find individual tasks each with their name and streak count. They are organized from largest to smallest.
The colors of the task badges show how mature the streak is. Blue is a new streak, on its way to the first milestone of a week (7 days). After Blue, is Green and then Red. Green includes days 7 through 21, ending with the creation of a Habit (according to Maltz). Similarly, Purple is an in-between for Gold, which is 90 days, the creation of a lifestyle change.
In the bottom right, there is the Add Task button. This button will prompt the user to enter a name and description for a new task. This will add a new task to the main task area.
When a user taps on a given task, they are taken to the Task View, where the details of the task can be found. Here, the task badge is shown once again, alongside an add button to add a new day to the task.
Beneath this, there is text that states that this task is a Daily Task, meaning it can be completed once per day. This can be changed to Weekly or Custom to complete tasks on a different time frame. For example, the “Go to the Gym” task can be completed three times a week, because the user works out three times per week. This allows the user to complete tasks on a wider range of times.
Moving further down the UI, there is the description that the user defined for the task when it was added. Below that, there is a note that will state the next step in the Habit Cycle. For this example, we have a maxed-out task, which means that it cannot upgrade any further. On another task, it may say “Water the Plants is 19 days away from becoming a permanent lifestyle change. Keep up the great work!”
Any task can be deleted using the trash can button above the task. Any streak that misses a day will return back to its original state and will have to be leveled back up. When a Gold task loses a streak, it returns to a habit (Red, for 21 days).
Returning back to the main page, there is a button in the top right that takes you to the User Profile Page. Here, there is a profile picture, user name, and multiple useful statistics about your streaks.
The first is your current Streak Score. A Streak Score is calculated by the number of tasks completed along with the multiplier associated with a given streak. For example, a Blue task has a multiplier of x1, so each task completed adds one to a user’s Streak Score. For each upgrade completed, the task gains 1 multiplier. For example, a Red task has a multiplier of x3, and a Gold task has a x5 multiplier.
Similarly, there are penalties for losing streaks. The longer a streak is, the more points you lose from your streak score.
Below this, we can see the Best Streak that we have achieved, along with the Best Streak Score we have achieved. On the far left, there is also a “Friend Rank” which is a future feature of this app that will allow users to compare their streak scores with friends. This will be implemented using Apple’s GameCenter toolkit.
Finally, the User Profile Page shows unique icons for each of the user’s longest streaks that they have. Each can be interacted with, and they will link to each individual task page.
Future Directions
This app has many future directions it can take. For one, there is a high potential for social capabilities. Between sharing Streak Scores, challenging friends to streaks, and posting progress to social media, it seems the possibilities are endless.
In addition to this, there are many more features that CoreData has that can be implemented. For example, sorting and filtering through different tasks. Another great idea is to create a Statistics tab to look through the history of tasks to visualize the user’s progress over time.