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.
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.
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.
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.
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.
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.