feat: data layer with types, 50 workouts, and Zustand stores
Types: Workout, Exercise, Trainer, UserProfile, UserSettings,
WorkoutResult, Achievement, Collection, Program.
Mock data: 50 workouts across 5 categories (full-body, core,
upper-body, lower-body, cardio), 4 durations (4/8/12/20 min),
3 levels, 5 trainers. Plus 6 collections, 3 programs, and
8 achievements.
Zustand stores with AsyncStorage persistence:
- userStore: profile, settings (haptics, sound, voice, reminders)
- activityStore: workout history, streak tracking
- playerStore: ephemeral timer state (not persisted)
Helper lookups: getWorkoutById, getWorkoutsByCategory,
getTrainerById, getPopularWorkouts, getCollectionWorkouts, etc.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>