Gym Personal is a gym training app that integrates with a backend to provide features like authentication, controlled forms, refresh tokens, and file uploads from the user photo gallery. This project showcases the use of declarative interfaces with a component library, and backend integration through a REST API.
- User Authentication: Secure login and registration system with JWT and refresh tokens.
- Training Management: Create and view training sessions.
- File Uploads: Upload user profile pictures from the gallery.
- Responsive Design: Optimized for various screen sizes.
- Notifications: Push notifications using OneSignal.
- RESTful API: Backend services with Node.js and Express.
- Declarative UI: Built with a component library for clean and maintainable code.
- Expo: To streamline the development process having access to Android and iOS folders throught
expo-dev-client
. - TypeScript: Ensures type safety and code quality.
- Native Base: Component library for building the UI.
- Axios: For making API requests.
- React Native: For navigation.
- Hook-form & Yup: For handling form state and validation.
- React Navigation: For navigation within the app.
- Expo Image Picker: For handling image uploads.
- OneSignal: For push notifications.
- Node.js and yarn
- React Native CLI
- Expo CLI
-
Clone the repository:
git clone https://github.com/MarcosVel/Gym-personal.git cd Gym-personal
-
Backend Setup:
cd backend yarn yarn start
-
Mobile App Setup:
cd mobile yarn npx expo start
Mobile:
- Update
mobile/.env.example
to.env
and put your ONESIGNAL_APP_ID. - Update
mobile/src/services/api.js
with your baseURL.
-
Start the backend server:
cd backend npm start
-
Run the mobile app:
cd mobile npx expo start
-
Access the app:
Use the emulator or physical device to navigate through the app, manage training sessions, and interact with other features in real-time.