Your cars, calmly. A calm, local-first iOS companion for every car in your life — owned, leased, financed, on a subscription, or borrowed. Open it, see that everything is fine (or the one thing that needs you), and get on with your day. No dashboards, no logs to keep up with.
Its soul is the Glance: three seconds of reassurance, then it gets out of the way.
- The Glance — one screen showing the thing that needs you, or nothing at all.
- Mileage carry-over — for a lease or subscription with a distance cap, a live gauge that banks the months you drive less. Unused kilometres roll over to the end of the term, so you see your real allowance, not just this month's.
- Garage — every car in one quiet home. A financed car can be marked paid off and quietly become yours (reversible).
- History — fills, costs and milestones gathered by month, without effort.
- Insights — honest cost and economy over any window; overage counted, never hidden.
- Documents vault — registration, insurance and inspection, kept on device.
The interface is English today; a String Catalog + the localization spec (LOCALIZATION.md) are in
place and more languages are in progress (the Android port already ships es/ca/nb/fr).
Everything stays on your iPhone. No account, no sign-in, no servers, no tracking — Koi makes no network requests of its own, so nothing ever leaves your device but the exports you trigger yourself.
- SwiftUI, iOS 17+, local-first.
- The Xcode project is generated from
project.ymlwith XcodeGen —project.ymlis the source of truth; the.xcodeprojis git-ignored.
brew install xcodegen # one-time
xcodegen generate # creates Koi.xcodeproj from project.yml
open Koi.xcodeproj # ⌘R on an iPhone simulatorRe-run xcodegen generate whenever files are added or removed.
Dev launch args: -seed loads sample data; -garage opens on the Garage tab (used for screenshots).
xcodebuild test -project Koi.xcodeproj -scheme Koi \
-destination 'platform=iOS Simulator,name=iPhone 16,OS=latest'Tests/ holds the logic net — money/date wire format, mileage carry-over, the finance→owned payoff
lifecycle, countdown/urgency and swap lineage. CI runs them on every push.
Koi/App— app shell, routing, the tab bar.Koi/Models—Garage(store + derived reads + mutations) and the domain types.Koi/Views— Glance, Garage, CarDetail, Log, Settings, Mileage history, the add/edit sheets.Koi/DesignSystem— colours, type, the soft-shadow card, controls, formatters, Phosphor icons.Koi/Resources— assets + theLocalizable.xcstringscatalog.appstore/— screenshot framing and the per-locale store metadata deck.
- Android — a native Kotlin/Compose port lives in a sibling repo (same logic, same JSON export format, so you can migrate iPhone ↔ Android).
- Site & privacy — koi.gariasf.com.