A macOS app for legal practice

What do I need to engage with today?

Matters is a personal attention layer for legal work. Not a case management system. Not a database. A calm, keyboard-driven Mac app that answers one question every morning.

Platform macOS · SwiftUI
Data SwiftData · Notion API
Status In daily use
Matters — Today view showing morning matters with headings, priority indicators, next actions, and settlement deadlines

Today view — matters organised by morning headings, with next actions, deadlines, and priority levels

Matters — Upcoming view with matters grouped by deferred date, detail panel showing shared notes and next actions

Upcoming — deferred matters grouped by date

Animated demonstration of drag-and-drop reordering matters in the Today view

Drag to reorder — the gesture is the decision

Animated scroll through the full Today view showing headings, multiple matter types, and priority levels

A full day — headings, types, priorities at a glance

01 — The Problem

One hundred and seven open matters. Which ones need me today?

Our firm uses Notion as a shared database for tracking legal matters. It works well as a system of record — every matter, every status update, every team member's notes in one place.

But there's a tension. Different people need different views of the same data. My secretary surfaces matters by date — when she sets a future date, the matter hides until then. I prefer seeing everything sorted by recency, so recently-touched matters float to the top.

Neither approach answers the real question: of all my open matters, which ones need my attention today, and in what order?

The question isn't "what are all my matters?" — Notion already answers that. The question is what do I need to engage with today, and in what order? That's a personal question. It deserves a personal tool.

02 — Design Philosophy

Four ideas that shape
everything

01

The matter is not the task

In Things, you complete a task and it's gone. A legal matter persists for weeks. You engage with it today, put it down, pick it up next Tuesday. "Today's engagement" is not "completion."

02

Calm over comprehensive

Notion is the filing cabinet with every drawer open. Matters is a clear desk with a small, deliberate stack of files. It shows what you need to see, when you need to see it, nothing else.

03

The drag is the decision

Moving a matter into Today is a commitment. Moving it to Someday is deliberate deferral. These gestures should feel physical and consequential — you've done something.

04

The firm stays in Notion

Matters doesn't replace the firm's database. The team continues in Notion. This is a personal, opinionated lens over shared data — one that reflects how I think about my day.

03 — A Day With Matters

The morning ritual

The app is designed around the rhythm of a solicitor's day. Not abstract productivity theory — the actual cadence of calls, settlements, deadlines, and waiting.

7:45 AM

Open the app

Matters deferred to today have auto-surfaced. A new matter appeared overnight in the Inbox — Mel assigned it to you in Notion. Your Today list has three holdovers from yesterday.

7:50 AM

Triage

Scan Anytime, drag what needs attention into Today. Check the Deadlines view — two settlements this week. Set your next action on each matter: "Chase OS for transfer," "Review draft contract." You're ready.

10:30 AM

A call comes in

Press ⌘K, type the client name, jump straight to the matter. Update the next action. If it wasn't in Today, drag it in. The whole interaction takes three seconds.

3:00 PM

Mel moves something

In Notion, Mel adds a matter to your Today list — urgent instructions just arrived. Within a minute, it appears in your app. A system notification tells you something changed.

5:30 PM

End of day

Two matters remain that you didn't get to. Defer one to tomorrow, leave the other — it'll still be in Today in the morning. Swipe to mark the rest as engaged. Tomorrow's a clean start.

04 — The Views

Six ways to see your work

Today

Your daily commitment. An ordered list of matters you intend to engage with. Drag to reorder, insert headings to group your day.

⌘1

Upcoming

Matters deferred to a specific date. Grouped by day — tomorrow, this week, next week. They auto-surface into Today when the date arrives.

⌘2

Anytime

Active matters with no specific date. Your working inventory. Each morning, scan this and drag what you need into Today.

⌘3

Someday

Genuinely dormant. Waiting on probate, waiting for property to sell. Out of sight, never lost. A conscious act of deferral.

⌘4

Deadlines

Every hard date across all matters — settlements, auctions, exchanges — in one chronological timeline. Your radar screen.

⌘5

Logbook

Finalised matters. A searchable record of completed work. Like closing a file and putting it on the shelf.

⌘6
05 — The Bridge

Notion stays the
firm's system of record

Matters doesn't replace Notion. It reads the firm's data and writes back your personal state — so your secretary can manage your day from the interface she already uses.

Matters

Your personal cockpit.
SwiftData for instant response.

60s poll

Notion

The firm's database.
Shared by the whole team.

From Notion → App

Matter descriptions, client names, types, shared notes, team assignments, safe custody numbers. The firm's facts, always current. New matters appear in your Inbox for triage.

From App → Notion

Your list assignment, position, next action, deferred date, priority. Written to dedicated fields in Notion — Rod List, Rod Position, Rod Next Action — so your secretary sees your state without needing the app.

Conflict resolution

Notion wins for firm data. The app wins for personal data. Last-write-wins for bidirectional fields. Simple, predictable, and in practice, conflicts almost never happen.

Local-first

The app works without network. Every drag, every edit is instant against SwiftData. Notion sync runs in the background on a configurable interval. You never wait on the network.

06 — Under the Hood

Built with

SwiftUI

Native macOS interface. Three-column NavigationSplitView. Dark mode, Dynamic Type, VoiceOver — all the platform conventions, respected.

SwiftData

Local persistence with @Model macros. Lightweight migrations. The foundation for instant, offline-capable UI response.

Notion API

Bidirectional sync via the Notion REST API. Actor-based HTTP client with rate limiting. Debounced outbound writes with retry queue.

Swift 6 Concurrency

Strict concurrency throughout. Actors for network and caching layers. MainActor for UI state. No data races.

Keychain Services

Notion integration token stored securely in the macOS Keychain. Never touches disk in plaintext.

UserNotifications

System notifications when your secretary changes something in Notion. Click to jump straight to the affected matter.

07 — Standing On Shoulders

Inspiration

Nothing exists in a vacuum. These are the tools and ideas that shaped the thinking behind Matters.

Things 3 The gold standard for personal task management on macOS. The Today / Upcoming / Anytime / Someday model. The feeling of dragging a task into Today. The calm.
Notion The firm's shared database and the foundation this app is built on. A reminder that the best tool for a team isn't always the best tool for an individual.
Linear Proof that a keyboard-first, opinionated interface can make work feel like play. The speed. The shortcuts. The conviction that defaults matter.
Eisenhower Matrix The distinction between urgent and important. Applied here as the difference between "this has a deadline" and "this needs my attention today."
Getting Things Done David Allen's insight that the next action is the smallest unit of progress. Every matter in the app has a next action — not a vague status, but a specific thing to do.