How bhauw/daily-planner works
Daily Planner is a privacy-conscious macOS day planner with a local web interface. The main workflow loads calendar, task, and mail data through a loopback API, presents planning and triage workspaces, and sends explicitly approved actions through capability-gated integrations. Its domain stages include calendar-role filtering and schedule previews, mail-body review and reply drafting, and task placement. The graph also shows Google authorization, encrypted settings, and the local assistant boundary. Some subsystem links reflect README-documented capabilities; unsampled wiring is left out.
Main entry points: PlannerAPIService.swift Planner API service · app.tsx Web interface · GoogleReadOnlyConnectionController.swift Read-only connection controller · LocalAPIServer.swift Loopback API server
Components 21
Planner interface
- Web interface
web/src/app.tsx - Planner workspaces
web/src/workspaces - Typed API client
web/src/api/client.ts
Local planning engine
- Native app host
DailyPlanner/Sources/DailyPlannerApp/main.swift - Loopback API server
DailyPlanner/Sources/DailyPlannerAPI/LocalAPIServer.swift - Planner API service
DailyPlanner/Sources/DailyPlannerAPI/PlannerAPIService.swift
Planning workflows
- Planning preview
DailyPlanner/Sources/DailyPlannerApplication/PlanningPreviewWorkflow.swift - Priority ordering
DailyPlanner/Sources/DailyPlannerDomain/PriorityEngine.swift - Calendar roles
DailyPlanner/Sources/DailyPlannerApplication/CalendarRoleWorkflow.swift - Mail triage
DailyPlanner/Sources/DailyPlannerDomain/MailTriagePolicy.swift - Mail body review
DailyPlanner/Sources/DailyPlannerApplication/EmailBodySanitizer.swift - Google connection
DailyPlanner/Sources/DailyPlannerApplication/GoogleConnectionWorkflow.swift
Provider integrations
- Read-only connection controller
DailyPlanner/Sources/DailyPlannerGoogle/GoogleReadOnlyConnectionController.swift - Google data sources
DailyPlanner/Sources/DailyPlannerGoogle - Local reply writer
DailyPlanner/Sources/DailyPlannerPlatform/ClaudeCodeReplyWriter.swift
Private state
- Private settings
DailyPlanner/Sources/DailyPlannerDomain/PrivateSettingsStore.swift - Encrypted settings store
DailyPlanner/Sources/DailyPlannerPersistence/EncryptedPrivateSettingsStore.swift
Other components
- Planner user
- Google services
- Configured assistant
- macOS Keychain
Connections 21
- Planner user → Web interface: uses
- Web interface → Planner workspaces: renders
- Web interface → Typed API client: requests data
- Typed API client → Loopback API server: calls loopback
- Native app host → Loopback API server: hosts
- Loopback API server → Planner API service: dispatches routes
- Planner API service → Planning preview: requests preview
- Planning preview → Priority ordering: orders events
- Planner API service → Calendar roles: reads roles
- Planner API service → Mail triage: triages mail
- Planner API service → Mail body review: sanitizes body
- Planner API service → Google data sources: reads provider data
- Google data sources → Google services: requests data
- Planner user → Google connection: connects account
- Google connection → Read-only connection controller: starts authorization
- Read-only connection controller → Google services: checks read access
- Read-only connection controller → macOS Keychain: checks credentials
- Planner API service → Local reply writer: requests draft
- Local reply writer → Configured assistant: generates locally
- Planner API service → Private settings: reads settings
- Private settings → Encrypted settings store: persists privately