TaskManager Overview
Breaking down a project into milestones and figuring out your roadmap can be a struggle. Let’s walk through an example for the project that I’ll be working on in a series of blog posts.
I am a big fan of TaskPaper by Hogs Bay Software and I use it extensively to keep track of my life across multiple devices and platforms. It has a simple yet rich interface.
But, and with developers there is almost always a but, I wish it integrated a bit better with some of the built ins for my Apple ecosystem, so that I would only have to check one place to see what I’ve got going on.
That’s the origin of my TaskManager
project, I hope that I can keep the same simplicity of TaskPaper, but integrate it with my Calendar
and Reminder
apps built into iOS. (Yes, TaskPaper supports exporting and importing into the reminders app, but unfortunately, not in the way I was imagining.)
I have a nodding acquaintance with Apple’s EventKit which gives an integration into the calendar(s), appointments, and reminders.
This seems perfect for my use of TaskPaper, where I have a number of items with due date tags with the following formats:
- Open-ended or no due date:
@due
- Due date:
@due(2024-10-31)
- Due date and specific time:
@due(2024-10-31 12:30)
- Appointments:
@due(2024-10-31 12:30-13:00)
@due(2024-10-31 12:30 thru 13:00)
- Spanning appointments:
@due(2024-10-31 13:00 thru 2024-11-06 15:00)
It’s easy to imagine these converting to a calendar event or a reminder in specific lists/calendars.
Groceries:
- Get candy @home
Fitness:
- Trainer @gym @due(2024-10-31 07:00-08:00)
Studio 617
Jp4Mobile:
- Blog post on enums in Swift @work @due(2024-10-31)
- Check blog engagement @work @due(2024-11-07)
Such as an event:
Or reminders:
Project Breakdown
As with any project, much of the work is breaking it down to smaller deliverables, so that you can both see incremental improvements, but also understand some of the concepts.
For this, I see the following milestones:
- Infrastructure
This is going to be the behind the scenes things to make everything possible.
It will include things like:
- Models
The data representation around the date structures above.
- Extensions
These extensions to the Apple Date foundation structure to make life easier for the
TaskManager
app. -
EventKit Wrapper
From a cursory reading of the Apple documentation, there’s certain logic and repetitive boilerplate checking of permissions that make a manager or some other form of wrapper a necessity, so that callers will have a cleaner interface.
- Models
- UI
What will be put on the screen and allow a user to interact with it.
- Main Text View
To present the various elements in a TaskPaper file(s)
These could be
Project
,Note
,Item
,Tag
on anyItem
and include their nested structure. -
Project
Detail ViewTo present a single
Project
-
Note
Detail ViewTo present a single
Note
-
Item
Detail ViewTo present a single item
-
Tags
Search Results ViewTo present
Item
s that conform to theTag
(s) searched for. - Settings View
- Main Text View
- Refinement
Nothing is ever perfect out of the gate.
Interacting with things will help me iterate and make it better (or at least more useful to me).
Blog Posts
As I work through my deliverables, I’ll be posting about some of the lessons learned, useful bits that I’ve learned, and outlining some of the pain points to try to help others.
Posts will include sample code in the Jp4Mobile repo. Feel free to reach out if you have questions.
Next week, we’ll talk about enums for data models.