Files
notes/README.md
T
rzen cf8616107b Add IndieAbout + IndieBackup, TestFlight release pipeline
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.
2026-07-14 20:50:06 -04:00

43 lines
2.3 KiB
Markdown

# 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](https://git.rzen.dev/rzen/indie-sync)
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
```bash
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.