尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗An open-source, AI running coach for iOS — built in the open as a CodeYam showcase.
Otterpace is a friendly running coach in your pocket: it pulls your activity from Apple HealthKit (or, optionally, Strava), keeps you moving toward your daily 10,000 steps, and gives kind, never-shame-based coaching through Buddy, a mood-reactive otter mascot.
It's one of the CodeYam showcase apps, alongside CodeYam Counter and TabCommand — worked examples built with codeyam-editor.
Otterpace is live — available on the App Store.
The end-to-end launch sequence that got us there is preserved as a runbook: ▶ docs/go-live-runbook.md — with a verification check at each phase.
Area deep-dives: site + DNS · AI coach · Strava + analytics · TestFlight prep.
The Today dashboard, a native SwiftUI screen that shows:
The Ask Coach chat, reached from a Today/Coach tab bar or the "Ask Buddy" button on the coach card:
CoachEngine
(Sources/AppCore/CoachEngine.swift) answers, so the coach always works and
captures stay reproducibleThe Weekly Review, opened from the Coach tab — a read-only recap the coach
generates from your weekly training load: what went well, what changed, training
risk, suggested next week, and one focus area, with Buddy's mood and an amber
safety callout when load spikes. Built by the deterministic WeeklyReviewEngine.
The Activity History, opened from the Today dashboard — recent
workouts grouped by week, each week fronted by its mileage / run-count / rest-day
rollup, with a friendly empty state for day one. Grouping is the testable
ActivityHistory.groupByWeek.
Settings, reached from the gear on the dashboard, gathers the account and integration controls:
The whole UI scales with Dynamic Type and meets WCAG AA contrast, and the app ships a code-generated app icon (see below).
The Today screen is driven by a single TodayState (see Sources/AppCore/Model.swift),
populated from HealthKit (or imported Strava activity) in the real app and from
each CodeYam scenario's deviceState preferences in the simulator preview.
Production starts empty; each scenario carries its own seeded state.
Otterpace is a worked example of building a native iOS app with the CodeYam editor — a scenario-driven loop where every feature is developed against seeded, captured states that render in a live simulator preview.
The core idea: a single TodayState (Sources/AppCore/Model.swift) drives the
UI, and each scenario (.codeyam/scenarios/*.json) seeds that state at launch
through a deviceState.preferences map (the rb* / otterpace* UserDefaults
keys) injected into the simulator. "Goal Crushed", "Recovery Caution", and
"Day One — Connect" are the same screens rendered from different seeds, each
captured as a screenshot the editor verifies.
Two patterns keep that loop reliable:
以上為 README 的開頭部分。其餘內容請閱讀原文。 檢視完整 README ↗