Files
rzen c5e8aea522 Projects tab: create via +, sort by activity/name/count
Declared-but-empty projects persist locally (UserDefaults) until a
note carries the name, at which point the project syncs via notes as
usual. Empty declared projects can be swipe-deleted.

Claude-Session: https://claude.ai/code/session_014esDWi42URLEC6Cj17hGQ3
2026-07-16 23:22:25 -04:00

3.5 KiB

Contextful

Context-aware note taking for iOS and macOS. Product name Contextful; project working name "Notes", bundle id dev.rzen.indie.Notes.

The idea: every note silently captures the context it was taken in — where you were, what time it was — and that context is used to recall notes later. Walk back into the coffee shop and the note with the barista's name bubbles to the top of the list.

Key features

  • Quick text notes — jot something down in two taps; first line doubles as the title
  • Voice notes — record a memo (iPhone, Mac, or Apple Watch); the audio is kept and transcribed on-device afterwards, with a per-note "re-transcribe in another language" override and a settings screen to enable transcription languages
  • Transcripts kept separate from your text — every transcription attempt is preserved on the note (latest shown, with language and confidence); your own typing is never mixed with or overwritten by machine output, and a transcript can be inserted into the note body on demand
  • Apple Watch capture — a watch-face complication opens a one-button recorder; the recording transfers to your iPhone over WatchConnectivity, which ingests and transcribes it (no iCloud on the watch); the watch keeps its copy until the iPhone acknowledges durable ingest, so a failed handoff never loses audio
  • Automatic context capture — location, place name (reverse-geocoded), time zone, and device are stamped onto every note, best-effort and privacy-friendly (all data stays in your iCloud)
  • "Right here, right now" recall — a ranked shelf of notes whose capture context matches your current place and time, above the regular newest-first list
  • Tags — manual organization alongside the automatic context; browse notes by tag
  • Projects — file notes under a project (or "category" — the term is your choice in Settings) with a swipe, browse them in their own tab, create empty ones ahead of time with the tab's "+", sort by activity/name/count, and add notes directly into a project
  • Search — full-text over note text, voice transcripts (weighted by transcription confidence), tags, and captured place names
  • iCloud sync — notes live as JSON files in your iCloud Drive (visible in Files.app) and sync across iPhone and Mac; the local database is just a rebuildable cache
  • iOS + macOS + watchOS — same app and data across iPhone and Mac, with an Apple Watch companion for voice capture
  • Backups — one-tap local backup and restore of all notes (IndieBackup); backup files can be shared and imported across devices
  • About screen — version info, changelog, and license in Settings (iOS) and the About window (macOS) via IndieAbout

Planned: richer context signals, smarter ranking.

Architecture

  • SwiftUI, iOS 26+ / macOS 26+, Swift 6 strict concurrency, XcodeGen (xcodegen generate)
  • Storage per the icloud-sync-engine pattern: iCloud Drive JSON documents are the sole source of truth (via the IndieSync package); a SwiftData cache is populated exclusively by metadata-observer events and can be wiped/rebuilt at any time
  • Context capture in Services/ContextService.swift (CoreLocation + MapKit reverse geocoding); ranking in Services/Relevance.swift

Build

xcodegen generate
xcodebuild build -project Notes.xcodeproj -scheme Notes \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro'

Requires APPLE_TEAM_ID in the environment for code signing.