Filip Růžička

The swift developer

How I Designed My Own GTD System in Taskee

When I started building Taskee, I didn’t want to create just another to-do list. My goal was to bring the Getting Things Done (GTD) methodology into a fast, intuitive app that respects the philosophy of David Allen, while feeling lightweight and modern.

For years, I had struggled to find a task manager that felt frictionless yet structured enough to follow GTD properly. Either they were too rigid, too bloated, or simply didn’t fit my brain. So I built my own.

Here's a technical deep dive into how I designed it, how I kept it close to the GTD roots, and what I learned along the way.

Mapping GTD to a Real App

GTD isn't just about to-do lists — it's a system. It asks you to:

  • Capture everything in your head
  • Clarify what each item means
  • Organize it into lists and contexts
  • Reflect regularly
  • Engage with intention

To reflect this in code, I used two core models: Item and Project. Each item has metadata (due date, flags, subitems), but the real power comes from the context in which it's used.

My mapping looked like this:

GTD ConceptTaskee Equivalent
Inboxproject == nil, default tab
ProjectProject model
Next ActionsTasks due today, flagged, or without a blocker
Waiting ForTasks with .isWaiting flag
Someday/MaybeTasks with no due date and low priority

The Inbox is always top-level and encourages capture-first behavior. You don’t need to think — just dump your brain. Later, you can clarify.

Beyond the Basics

I didn’t want Taskee to just mimic GTD — I wanted it to evolve it for mobile use.

1. Repeatable Tasks

Not everything is a one-off. Think: weekly reports, workouts, or monthly payments.

Instead of using a basic repeat toggle, I implemented a flexible RepeatOption:

  • Specific weekdays (e.g. Mon, Wed, Fri)
  • Every X days, weeks, or months
  • “Last day of the month”

When a repeating task is marked as finished, item.finish() generates the next instance automatically — including subitems if present.

2. AI-Assisted Goal Decomposition

A powerful GTD habit is breaking down projects into concrete next steps. But that takes energy.

In Taskee Premium, you can enter a goal like “Learn SwiftUI” or “Launch side project”, and the app uses AI to generate actionable items. These are added either to your Inbox or to a chosen project.

This simulates the "clarify" and "organize" phases with minimal friction.

3. Notifications, Flags, Priorities

  • Priorities help sort your day — high, medium, low.
  • Flags act like stars or importance indicators.
  • Local notifications remind you when a task is due or when you want to be nudged.

Everything is synced securely using encrypted storage and a Vapor-based backend.

Mind Maps as a Starting Point

When working on larger projects, I often start with a mind map. It’s faster to sketch out structure visually, then translate it into tasks.

For example, planning a new feature in Taskee often starts as:

  • Central node: “Release new onboarding”
  • Branches: Design, Copy, Animations, Tracking

Each branch becomes a Project or a group of Items, and from there it flows naturally into actionable work.

Mind maps help keep the why in focus — and GTD is all about thinking with purpose.

Simplicity Over Complexity

A common trap when building a GTD app is overengineering. You start wanting tags, labels, filters, contexts, dependencies…

Instead, I stuck to the following principles:

  • Tasks are flat and lightweight.
  • “Today” is the main screen — shows what matters now.
  • Adding a task should take under 2 seconds.
  • Structure should emerge, not be forced.

Taskee uses SwiftUI, CoreData, and the excellent Factory for dependency injection. All networking and sync run through Vapor with async/await support.

What I’d Do Differently

  • Better UI separation: in hindsight, I should have abstracted more of the business logic away from views earlier.
  • Fully embrace async/await: it’s the future, and callbacks just get in the way.
  • Data export model: I plan to add a way to export your entire task database as plain JSON or markdown — because your data is yours.

Final Thoughts

GTD changed how I work, but Taskee changed how I feel about work.
It’s a system I trust, because I built it around my brain — not the other way around.

If you're into GTD, indie development, or simply want a better relationship with your to-dos, maybe this article inspires you to build your own flow too.

And if you want to try Taskee, stay tuned — a public beta is coming soon 🚀