Initial scaffold: context-aware notes app for iOS + macOS
XcodeGen project (Notes / NotesMac / NotesTests), Swift 6 strict concurrency, iCloud-document storage via IndieSync with a SwiftData cache, automatic capture context (location, place, time zone, device) on every note, context-based relevance ranking with a 'Right here, right now' shelf, tags, search, and the square.and.pencil-on-red app icon.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 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
|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user