IndieAbout: About section in iOS Settings and macOS About window; LICENSE
switched to the portfolio-standard ISC text (reflowed for in-app rendering).
IndieBackup: files-only backup/restore of the iCloud container documents
('.notesbackup' document type on both platforms), SwiftData cache rebuilt
via SyncEngine.rebuildCache() after restore, monitors suspended during the
file swap, onOpenURL import with pre-launch queueing.
Release pipeline: Scripts/release.sh (ios|mac|all) archives and uploads via
xcodebuild + ASC API key; platform-partitioned build numbers (iOS even,
macOS odd) since both targets share one bundle ID and build sequence.
2.3 KiB
2.3 KiB
Notes
Context-aware note taking for iOS and macOS. Working name — 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
- 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
- Search — full-text over note text, 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 — same app, same data, both platforms
- 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: voice notes with transcription, 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 inServices/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.