Gains Tracker is a hybrid mobile application built with React Native and Expo. It is designed to work seamlessly both offline (using local device storage) and online (with real-time cloud synchronization via Firebase).
Whether you want to keep your data completely private on your phone or sync your gains across multiple devices with a registered account, Gains Tracker has you covered.
- Hybrid Data Management: * Offline Mode: Instantly track workouts using
AsyncStoragewithout creating an account.- Cloud Mode: Securely register an account to sync workouts and custom exercises to Firebase Firestore.
- Comprehensive Logging: Track exercises by Sets, Reps, Weight (lbs/kg), or Time (duration in seconds).
- Smart Daily Stats: Automatically calculates your total sets and estimated calories burned for the selected day.
- Custom Exercise Library: Add or delete custom exercises. Cloud users get their own isolated, private exercise lists.
- Interactive Calendar: View a calendar overview of your past workouts and filter your history by specific dates.
- Bilingual Support (i18n): Fully translated into English and Dutch, with user preferences saved to their cloud profile.
- Secure Authentication: Full Firebase Auth integration including Login, Registration, and Password Recovery.
- Data Privacy: A dedicated "Danger Zone" in settings allows users to permanently and securely delete their account and all associated cloud data.
(Add screenshots of your app here!)
- Framework: React Native & Expo (using Expo Router)
- Backend/Database: Firebase (Authentication & Firestore)
- Local Storage:
@react-native-async-storage/async-storage - UI Components:
react-native-calendars,@expo/vector-icons(Ionicons)
To get a local copy up and running, follow these simple steps.
Make sure you have Node.js installed, along with the Expo CLI.
Clone the repository and install the dependencies:
git clone [https://https://github.com/nekomana-project/app_rep_gains.git](https://https://github.com/nekomana-project/app_rep_gains.git)
cd gains-tracker
npm installBecause this app uses Firebase for cloud syncing, you need to provide your own Firebase configuration keys.
Create a .env file in the root directory of the project and add your Firebase credentials using the EXPO_PUBLIC_ prefix:
EXPO_PUBLIC_FIREBASE_API_KEY=your_api_key_here
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_app_idStart the Expo development server:
npx expo startYou can then open the app on your physical device using the Expo Go app, or run it on an iOS Simulator / Android Emulator.
app/(tabs)/index.tsx: The main application hub (Auth screens, Main Dashboard, Modals, Firebase logic).firebaseConfig.ts: Initializes the Firebase app using local environment variables.assets/: Contains images, fonts, and icons.
Distributed under the MIT License. See LICENSE for more information.