Autodue

Autodue is a native Android application that allows a user to create a to-do list where tasks have a due-date, priority, and expected duration. By using their device's calendar, Autodue is able to automatically find an empty time slots and create events for the tasks based on their priority and due date.

Autodue was created in a team of 5 for a Software Engineering course at UC San Diego. Throughout the process we worked closely with another group acting as our client. After determining their needs through user interviews, we used Agile development methods in order to deliver incremental updates and receive user feedback in short, one-week iterations.

User Interviews

Our initial user interviews were quite open-ended, with more general questions about daily problems that our users faced. During our discussion, issues about user productivity were brought up several times. Another user also talked about he struggled with completing tasks due to his busy schedule.

Our group decided that a way to tackle the problem would be to create a to-do list that sorts itself based on priority. When we went to our client group with this solution, the suggested we integrate it with the user's Google calendar. This gave us the baseline functionality for our application.

Initial Struggles

Our team had no previous experience with Android development, so we all went through the Android development tutorials and worked overtime to deliver a working, native Android app prototype. In our first week, we were only able to deliver an application that linked to the user's calendar and another separate application that allowed a user to create a task. Our client group was unable to give us any useful feedback for the first week due to this.

One for the main issues for the first week was the lack of version control. After our initial failure, I created a shared repository on GitHub for our group to use. While my team was familiar with using git on their own, a few members had no previous experience using it in a team setting. In order to ensure a smooth development process, I taught them how to properly create a new branch and then merge it back into master.

Design

After dealing with these initial problems, my team created basic mockups for our app. We did this initially working on a whiteboard, and then translating higher-fidelity wireframes. The general idea we had was to have a task list and a calendar view.

We also attempted to incorporate some elements of Google's material design. To do this, we added a floating action button on the task list page for adding tasks and used a side drawer for navigation.

Fully implemented side drawer for navigation

Development

With our general design set, we were able to focus on specific functionality. My first task was to implement our to-do list. After researching the Android documentation and looking through several deprecated elements, I settled on the RecyclerView. The initial implementation was simple, and each item had only it's name, priority, and due date. Based on user feedback we added the amount of time left before the due date, the duration, and color coded each task based on priority.

Example of a to-do list

After we had the main functionality for adding events to the user's calendar, our clients recommended that we add a way to set certain hours off-limits to the application. This way, Autodue wouldn't add events at times the user was typically asleep. Implementing this functionality was another of my responsibilities. I implemented it by allowing the user to set an interval of time where events could not be added.

Off-limit hours page

Here's an example of the full flow for adding a task to the to-do list and then generating the event in your Google Calendar.

Completed flow for adding a task