Skip to content

Latest commit

 

History

History
109 lines (88 loc) · 4.64 KB

File metadata and controls

109 lines (88 loc) · 4.64 KB

GitHub Actions Coverage Last Commit License

Blinkly - Eye exercises & break reminders

Kotlin Multiplatform app for eye health support

Product scope

Blinkly has baseline shared components, navigation, and Compose screens for the core app flow: onboarding, home tabs, dashboard, preferences, progress, garden, achievements, reminders, new reminder creation, trainings, and workout execution.

Implemented feature areas:

  • 20-20-20 break reminders
  • Simple exercise blocks and workout flow
  • Smart reminder list and reminder creation
  • Progress tracking and calendar
  • Garden growth
  • Daily eye tips
  • Achievements to unlock

Used libraries

Agent documentation and Blinkly skills

  • Main repository agent context: AGENTS.md
  • Local Blinkly skill sources: .ai/skills/mvikotlin, .ai/skills/decompose, .ai/skills/decompose-component-tests
  • Treat the repository copies as the source of truth; avoid keeping duplicate global Codex skill copies for normal Blinkly work

Build and run the iOS app

The iOS host has native CocoaPods dependencies, including Yandex Mobile Ads, Firebase, and Google Sign-In. Always build the iosApp scheme from iosApp/iosApp.xcworkspace, not from iosApp/iosApp.xcodeproj; the project file alone does not include the Pods build graph.

Prepare the workspace after cloning or changing Podfile/Podfile.lock:

cd iosApp
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pod install
open iosApp.xcworkspace

In Xcode, select the iosApp scheme and an iOS Simulator, then use Run. This is the recommended interactive workflow. Android Studio may generate an Xcode Application run configuration backed by iosApp.xcodeproj; if its build command does not explicitly use iosApp.xcworkspace, it will miss the pods and should not be used for this target. Use Xcode or the workspace-based CLI flow instead.

For a terminal build and simulator installation, first inspect the installed runtimes and available devices:

xcrun simctl list runtimes
xcrun simctl list devices available

The device list contains entries in the form iPhone 16e (99861C8A-3735-4F68-9230-88824D34F6A6) (Shutdown). The UUID inside parentheses is the simulator-udid. Choose a device with an iOS runtime of 16.2 or newer, then run from the repository root:

export SIMULATOR_ID="<simulator-udid>"
export DERIVED_DATA="$PWD/iosApp/build/DerivedData"

xcrun simctl boot "$SIMULATOR_ID" 2>/dev/null || true
xcrun simctl bootstatus "$SIMULATOR_ID" -b

xcodebuild \
  -workspace iosApp/iosApp.xcworkspace \
  -scheme iosApp \
  -configuration Debug \
  -sdk iphonesimulator \
  -destination "platform=iOS Simulator,id=$SIMULATOR_ID" \
  -derivedDataPath "$DERIVED_DATA" \
  build

xcrun simctl install \
  "$SIMULATOR_ID" \
  "$DERIVED_DATA/Build/Products/Debug-iphonesimulator/Blinkly.app"

xcrun simctl launch "$SIMULATOR_ID" com.sedsoftware.blinkly.iosApp

See the macOS/Yandex iOS guide for the required Xcode versions, Gradle preflight, troubleshooting, device builds, and Release Archive checks.

Component references

  • Root and home navigation: shared/component/root, shared/component/home
  • Onboarding flow: shared/component/onboarding, shared/component/onboarding/child/step1 ... step5
  • Home tabs: shared/component/main, shared/component/progress, shared/component/reminders, shared/component/trainings
  • Nested feature components: shared/component/main/child/preferences, shared/component/progress/child/achievements, shared/component/progress/child/garden, shared/component/reminders/child/newreminder, shared/component/trainings/child/workout
  • Shared Compose screens: shared/compose/src/commonMain/kotlin/com/sedsoftware/blinkly/compose/ui
  • Common component tests: shared/component/root/src/commonTest/kotlin/com/sedsoftware/blinkly/component