Rep Check is a simple React Native assessment application designed to demonstrate frontend implementation skills, state management, and form validation.
- Authentication Flow: Secure login flow with global state management.
- Workout Logging: Track your daily exercises with details like name, weight, and reps.
- Form Validation: Robust error handling and type coercion utilizing Zod & React Hook Form.
- Location Services: Fallback-ready location fetching mechanism to display your current workout region.
- Exercise Library: Infinite-scroll library of available exercises and their target muscles.
- Theming: Full dark mode/light mode support using styled context and mmkv.
- Testing: Short test for mmkv (core/storage)
To test out the application, you must use the following test account credentials as backend registration is not wired up for this assessment:
Email: py@test.com
Password: password123
- Node.js
- Expo CLI
- iOS Simulator or Android Emulator
- Clone the repository.
- Run
npm installto fetch dependencies. - Run
npx expo prebuildto build. - Run
npx expo run:iosornpx expo run:androidto run the app .
- React Native & Expo
- React Hook Form
- Zod (Validation)
- Zustand (State Management)
- TanStack Query (Data Fetching / Infinite Scroll)
- UI: React Native Reanimated & Gesture Handler
While the core functionality is built, there are several areas that could be enhanced in a production environment:
- Backend Integration: Currently, workouts are saved locally in a Zustand store. Implementing a real backend (e.g., Supabase, Firebase, or a custom Node.js server) is required for persistent, cross-device data.
- Local Storage Persistence: The Zustand workout store does not currently use a persistence middleware (like MMKV or AsyncStorage), meaning logs clear on app reload.
- Advanced Filtering: The Exercise Library is an infinite list. Adding a search bar or filter tags (by muscle group or equipment) would significantly improve the UX.
- Workout History & Analytics: A calendar view or chart screen to visualize progress over time (e.g., seeing bench press weight progress over months) would add massive value to the user.
- Form Real-Time Validation UX: React Hook Form currently validates on submission. Adding
mode: 'onChange'ormode: 'onTouched'would provide instant feedback to the user before they hit the save button. - Error Boundaries: Adding React Error Boundaries around the main navigation stacks would ensure the app catches any unexpected rendering errors gracefully without crashing the entire app.