For the last year I have been developing my own productivity app. The trigger has been that my work computer has been blocked to download anything from the Mac Apple Store… but I still can run Xcode so nobody said anything about compiling my own app
So I want this thread to become my “building in public” sort of diary. Currently the app has a lot of rough edges and the workflow is not very clear so I am very open to suggestions. Whenever I decide it is free for release, it will be free as in beer if you compile it yourself, and probably a 1-2$ one-time payment in the App Store, no subscription.
GrandLink planner: the itch I’m scratching
Use only Apple’s native EventKit framework to build my own Franklin-style productivity workflow. Reminders integration in Calendar was promising but felt half-baked. What GrandLink tries to achieve is to provide a proper time blocking structure on top of Reminders and Calendars, with no additional cloud sync or whatever. I am a staunch believer that Apple’s EventKit framework (the one that underpins Reminders and Calendars) is the ultimate solution for syncing across devices, but applications using it (Goodtask, Fantastical, etc.) either fall on the side of “showing tasks but less planning” or “showing calendar but less heavy on task management”). More opinionated apps like Things or Omnifocus do have their own syncing mechanism for good reasons.
The solution
Tasks are Reminders, Events are Calendar events, and Grandlink manages the link between Tasks and Events to create “time blocks”. So if you time block a task in Grandlink, it will create a corresponding calendar event in your designated Calendar (that’s where the Grandlink comes from, the app only manages “a link” between the Reminder and an associated calendar event). No account linking, no OAuth nightmares that are complicated by themselves but impossible to do in an enterprise environment. If the calendar or task list is in your Apple device, it will appear in GrandLink.
Calendars can be grouped into Calendar Sets for easier filtering, and the Reminder Lists can be associated to one of a set of hardcoded Roles, so in the future I can implement some type of “Goals and Mission” feature.
We are all here for the screenshots, aren’t we?
The daily view allows you to schedule reminders and or time block them.
The tasks can be shown in a drawer for carrousel style browsing. There is a reason for this.
Reminders, events and their linked time blocks can be edited (work in progress):
There is a weekly planning view:
The user can decide if any calendars are to be totally ignored, and group the rest in “Calendar Sets”.
Reminder Lists can be associated with specific calendars, so Grandlink knows where to schedule the time blocks.
Tasks and events can be time blocked or rescheduled quickly:
And last but not least, iPad and iPhone versions are also in the pipeline (hence the horizontal carousel for tasks… it’s a must in a mobile app where there is no proper horizontal screen real state)
What remains to be done
As you can see from the screenshots, I am not an expert in UI design. There are a lot of corner cases that will probably make the application fail miserably (what happens if you change your Calendar or Reminder using Reminders, Calendars, Goodtask or Fantastical?? I have no idea, I haven’t tested thoroughly but I expect a lot of bugs here and there)
Role management and proper goal-setting and big-picture planning is TBD.
Roadmap
For the next month I want to test-run on my own calendars and reminder lists to find obvious usability quirks and bugs.
Role and goal setting is not yet functional, so that’s the secondary target, and I might also add some note taking but that would probably require CloudKit syncing which I don’t want to add for the time being.
After that I will do a private .dmg rollout to beta-testers, only for desktop, targeting the latest macOS version (I don’t expect to be able to provide support for anything I’m not running in my devices) If all goes well, by summer’s end I’ll be ready to run a TestFlight controlled rollout and finally publish it to the AS.
Any suggestions, improvements or observations are welcome!
PS: If you read this long, I can confess the secret: I haven’t been building it for a year, it’s been a week using Opencode, Claude Code and whatnot. ![]()
PPS: “La Pescadería” is a fish restaurant in Madrid I will be visiting today for the first time.







