
Overview
PriceScope
Live Markets & WidgetKit — Native iOS App.
See PRD.md for full requirements.
Status
Building in phases on the dev branch.
| Phase | Scope | Status |
|---|---|---|
| 1 | Project scaffold · models · networking · repository + mock | ✅ Done |
| 2 | Watchlist UI · live price streaming · SwiftData persistence | ✅ Done |
| 3 | Swift Charts detail view (line + candlestick) | ✅ Done |
| 4 | WidgetKit small + medium widgets + App Intents | ✅ Done |
| 5 | Lock-screen widget · offline banner · UserDefaults cache | ✅ Done |
| 6 | Settings · tests · polish · TestFlight | 🟡 Partial (settings + tests; TestFlight / alternate icons manual) |
Structure
PriceScope/
├── App/ SwiftUI app entry
├── Core/
│ ├── Models/ Ticker, Price, Candle, Timeframe
│ ├── Networking/ APIClient, endpoints, DTOs, errors
│ ├── Repository/ Protocol + concrete + mock
│ └── Cache/ (Phase 5) UserDefaults cache
└── Features/ (Phase 2+) per-feature modules
PriceScopeTests/ XCTest suite with mock injection
Stack
SwiftUI · Combine · async/await · URLSession · WidgetKit · App Intents · SwiftData · UserDefaults · Swift Charts · XCTest.
iOS 17+.
Build
Regenerate the Xcode project after editing project.yml:
xcodegen generate
Open PriceScope.xcodeproj, add the App Groups capability for group.com.pricescope.shared on the app and widget targets in Xcode (entitlement files are already in the repo), then run tests with ⌘U.