← Back to all projects

Tasks

swiftswiftuimacosmarkdownlocal-first

I built Tasks because I was tired of task managers locking my data into proprietary databases. I wanted a system where my data was mine—portable, version-controllable, and accessible even without the app.

The core philosophy of Tasks is “The Filesystem is the Database.”

No Proprietary Silos

Each task in the application corresponds 1-to-1 with a Markdown file on your disk. There is no hidden SQLite database or opaque binary file. If you create a task called “Buy Milk”, the app creates a file named Buy-Milk.md in your folders.

This means you can:

  • Sync your tasks using any service (iCloud Drive, Dropbox, Syncthing, Git).
  • Edit your tasks using any text editor (VS Code, Obsidian, Vim).
  • Script your workflows using standard shell tools.

How it Works

The app monitors a specific directory for changes. When you add a file externally, the app updates instantly. When you check a box in the app, it simply writes a change to the file.

flowchart LR
    App[Tasks App] <-->|Read/Write| FS[File System]
    FS <-->|Sync| Cloud[iCloud / Dropbox]
    FS <-->|Edit| Editor[VS Code / Obsidian]
    
    subgraph "Your Data"
    FS
    end

Data Format

Tasks uses standard Markdown with YAML frontmatter to store metadata. This ensures the data is both machine-parseable and human-readable.

---
id: "D4C3B2A1-..."
status: "todo"
created: 2026-01-31T12:00:00Z
tags: ["chores", "shopping"]
---

# Buy Milk

- [ ] 2% Milk
- [ ] Chocolate Milk

Because the format is open, you can easily build your own tools on top of your task data, or migrate to another system entirely if you choose. The application is just a specialized view over your own files.