Offline-first workout tracker for iOS, designed, built and shipped solo. Live on the App Store: Daily Logs
Workout templates, guided execution with resumable sessions, freestyle (quick) workouts, an exercise catalog, history and session review, theming, local notifications, and a Lock Screen / Dynamic Island Live Activity for the rest timer.
- Expo SDK 56 / React Native 0.85 (New Architecture), file-based navigation with
expo-router - Local-first persistence:
expo-sqlite+ Drizzle ORM, with versioned migrations checked in underdrizzle/ - State: Zustand stores + TanStack Query over a typed repository layer (
src/db/repositories) - UI: NativeWind, Reanimated 4 + Gesture Handler, iOS glass effects, haptics
- Native iOS target: hand-written SwiftUI Live Activity + widget (
targets/workout-widget), bridged via a local Expo module - i18n: i18next (en / pt-BR)
- Jest unit suites for the workout-execution store, Zod schemas, and the e1RM engine (
src/__tests__/) - Maestro E2E: 15 flows + 9 reusable subflows covering the critical paths: execute-to-summary, quick workout, session resume, mid-workout structure editing, cancellation, empty states (
maestro-workspace/)
Decision records live in docs/adr/. Feature reference in FEATURES.md. The landing / privacy site is a static app in site/.
npm install
npx expo run:ios # or: npm run ios
npm testBuilt with an AI-assisted workflow (Claude Code + Maestro-driven QA); every change ships through lint, unit tests and the Maestro suite.