TimeWise Planner Flashcards

1
Q

What is TimeWise Planner?

A

TimeWise Planner is a productivity app for iOS and Android that I built to help users manage their time.

The idea came from my own need to balance different aspects of my life. I wanted a simple tool that would help me stay on track with my goals and deadlines while allowing me to spend time on other parts of my life without feeling guilty about neglecting any part of my life, whether its work, family, relationships, exercise, learning, or anything

So, I designed the app to let users set goals on how they want to spend their time and easily schedule their day-to-day activities. It tracks how much time the user is spending on each of their life activities and compares it to their goals, providing visual feedback through graphs and charts. This way, users can visualize their progress in one screen.

Something else that was important to me was that the schedule was easy and quick to edit. I put a lot of effort to make a UI that would make it easy for the user to quickly edit their schedules. So if plans change the user should be able to edit their schedule with a couple of clicks

And from a technical standpoint, I used React Native and Expo to build it and I used SQLite for data storage.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What was the motivation to build TimeWise Planner?

A

So before I quit my job at Citi I was already working on TimeWise. I had a lot of hobbies and interests that I wanted to spend time on like side projects, learning new stuff, playing sports, working out, and spending time with family and friends.

And before I quit I made a detailed itinerary of how I wanted to spend my time during my sabbatical. And the plan was pretty ambitious.
To justify quitting my job and taking a sabbatical it’d have to be worthwhile.
The plan was to travel the world, become an expert in AI, launch 2 apps, create a video game, learn to dance, learn to scuba dive, learn to surf. As you can see from my resume I only finished the one app.

And all this planning inspired the idea for an app that would help me balance my time between many different pursuits. That was the motivation behind TimeWise, it was an app designed to help users like myself manage their time better to achieve their goals.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Can you explain a technical challenge you faced while developing TimeWise Planner and how you overcame it?

A

Absolutely. One of the biggest technical challenges I faced while developing TimeWise Planner happened towards the end of the development process. Up until then, I had been running the app through the Expo app to avoid paying for Apple’s Developer account, which costs $100 per year. Everything seemed to work perfectly during development.

However, once I felt the app was ready for deployment, I paid for the Developer account and installed it on my phone via TestFlight. That’s when I discovered that the app was broken. The main issue was with how I navigated between screens using modals. This approach worked fine while running the app through Expo, but it didn’t function correctly in the installed version.

I suspected the problem was due to a race condition that allowed the modals to work in the slower streaming environment of the Expo app but not in the faster, installed environment. To fix this, I had to uproot the entire foundation of the app and implement React Navigation for screen navigation, which forced me to integrate Redux for state management.

This rework involved a significant amount of effort. I had to refactor the entire app to use React Navigation for handling screen transitions and Redux to manage the app’s state efficiently. This was a daunting task because it meant going back and redoing a lot of what I thought was already finished. But in the end, it paid off. The app became more robust and scalable, and the navigation issues were resolved.

This experience taught me the importance of thorough testing in different environments and the value of using proper navigation and state management tools from the beginning. It was a challenging but ultimately rewarding process that significantly improved the quality of TimeWise Planner.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What did you do in your sabbatical?

A

So when I was younger I didn’t have money to do much traveling and I had read that your early 20s is like the best window of your life to travel the world and I think that’s true.

So I decided to go backpacking. I spent 4 months in South America and another 4 months in Asia until in Japan my knees gave out and I had to fly back home.

And the whole time I was traveling I was working on the app. Which honestly added a layer of challenge to the development of the app as hostels aren’t the most conducive environments for focused work, and there are plenty of distractions.

But overall it was a great experience and a great learning experience too.

Optional follow up:
The biggest lessons I learned were:
1) how resilient we are and how quickly we can adapt to less-than-ideal conditions
2) And I gained confidence in my ability to figure things out and to try new things

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What sets TimeWise Planner apart from other productivity apps?

A

First, it has time tracking and a simple User Interface. It tracks how much time you spend on each of your activities and compares it to your goals. This way, you can see exactly where your time is going and make adjustments as needed.

This includes the charts and graphs for visual progress tracking. It’s a great way to stay motivated and see your achievements visually.

Another standout feature is the hierarchy system. You can have an activity with multiple sub-activities that all contribute to the main goal. This helps users organize their tasks in a more detailed and meaningful way.

One thing I focused on was making the schedule easy to edit. You can adjust your plans on the go with just a few clicks, so if something changes, your whole schedule doesn’t fall apart.

The app also includes countdowns for deadlines, which helps you stay aware of upcoming events and stay motivated.

You can keep notes on your activities, which allows you to keep a log of your activity over time

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How did you manage your time and stay productive while developing the app during your travels?

A

Managing my time and staying productive while traveling was definitely a challenge. I set clear goals and deadlines for what I wanted to achieve, and I made sure to allocate specific times for work. I often sought out quieter environments, like cafes or co-working spaces, where I could focus better than in hostels. Despite the challenges, working on the app while traveling was a rewarding experience that taught me a lot about time management and staying disciplined in less-than-ideal conditions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

How did you handle user feedback and updates?

A

A lot of the feedback came from friends and family initially. I would ask them to use the app and tell me if they found anything confusing or difficult to use. Their feedback was incredibly valuable because it provided real-world insights into how people were interacting with the app.

Based on the feedback, I would prioritize the updates that would have the most significant impact on the user experience. For instance, if multiple users mentioned a particular feature was confusing, I would focus on simplifying that aspect of the app. Regular updates and improvements were essential to ensure the app stayed user-friendly and functional.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Describe the architecture of your app?

A

Starting with Activities and Their Relationships:

At the heart of TimeWise Planner, we have the activities table. This is where every single activity a user creates is stored. Think of it as the foundation. Each activity has key details like its name, how much time is allocated to it, and its start and end dates.

Now, what if you have a major project that needs to be broken down into smaller tasks? That’s where the activity_relationship table comes in. This table helps us create a parent-child relationship between activities. Imagine you’re developing a new software application – the main project would be the parent activity, and all the smaller tasks like designing the UI, writing the code, testing the application, and marketing would be the child activities. This hierarchical setup makes it easy to track and manage complex projects.

Next, Let’s Talk About Scheduling and Tracking:

To manage when activities happen, we have the slot_is_activity table. This table is like a matchmaker, linking activities to specific time slots, tasks, or even markers. It ensures that every activity is scheduled precisely.

As users go through their day and work on activities, we need to keep track of time spent on each activity. This is where the TimeSpentPerDay table shines. It records the amount of time spent on each activity every day, helping users see where their time is going and adjust their schedules if needed.

Setting Checkpoints and Marking Important Dates:

For those moments when you need to track progress against specific milestones, we have the checkpoint table. Checkpoints are like milestones in a journey. You can set them within activities to ensure you’re on track to meet your goals.

Alongside checkpoints, we have the marker table. Markers are used to set significant dates or recurring events. Think of them as flags that highlight important points on your schedule. They can be one-time events or recurring ones, like weekly meetings or monthly reviews. Each marker can have attributes like type, date, duration, and notification settings to keep you on top of your schedule.

General Configuration and User Preferences:

Every user has unique preferences, and we respect that. The general table stores these preferences, such as whether they prefer a 24-hour clock format or a 12-hour one, and their notification settings. This table ensures that the app behaves exactly how each user wants it to.

Adding Notes and Tracking Task Completion:

Sometimes, you need to jot down a quick note about a particular time slot. The slot_notes table allows users to add notes to specific time slots. It’s like a digital sticky note that keeps everything organized and in one place.

To keep track of task completions, we use the task_is_complete table. This table logs when tasks are marked as complete, providing a clear record of progress and achievements. It’s satisfying to see those check marks add up!

Handling Tasks and Recurring Schedules:

Tasks are a bit different from activities. They can have specific recurrence patterns and durations, and all this information is stored in the task table. Whether it’s a one-off task or something that repeats weekly, this table has it covered.

Finally, there’s the deleted_recur_slot table. Sometimes, you need to make exceptions in your recurring schedule. This table records any recurring slots that have been deleted, ensuring the schedule remains accurate and up-to-date.

Bringing It All Together:

So, how do all these pieces work together? Here’s a quick example:

Create an Activity: You create an activity in the activities table.
Set Up Relationships: If it’s part of a bigger project, its relationship to the main project is stored in the activity_relationship table.
Schedule It: You schedule the activity using the slot_is_activity table.
Track Your Time: As you work, time spent is logged in the TimeSpentPerDay table.
Set Milestones: You set checkpoints to track your progress using the checkpoint table.
Mark Important Dates: Significant dates are marked using the marker table.
Personalize Settings: Your preferences are saved in the general table.
Add Notes: You jot down notes in the slot_notes table.
Complete Tasks: Task completions are recorded in the task_is_complete table.
Handle Recurrences: Any deleted recurring slots are tracked in the deleted_recur_slot table.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

How do you keep track of time spent on an activity?

A

I have a function that calculates how much time I have allocated to each activity that I’ve spent time on a given day. I use this function to keep track of my time spent on each activity per day and I store this on a table with each row representing a unique day-activity combination. When I want to fetch how much time I’ve spent in a given time period like a certain week or month I get the sum of every row with that activityId and all of its descendants within the time period.

I run this function every minute on the current day and also I run it for every schedule update for the day that the update was made for

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

How do you manage recurring slots, tasks, and markers?

A

I use regex and some math operations

How well did you know this?
1
Not at all
2
3
4
5
Perfectly