Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luismda/ignite-gym
Mobile app for realization gym exercises with instructions and history of completed exercises.
https://github.com/luismda/ignite-gym
async-storage deep-linking expo expo-image-picker firebase-cloud-messaging native-base react-hook-form react-native react-native-onesignal react-navigation typescript zod
Last synced: 1 day ago
JSON representation
Mobile app for realization gym exercises with instructions and history of completed exercises.
- Host: GitHub
- URL: https://github.com/luismda/ignite-gym
- Owner: luismda
- Created: 2023-08-20T19:21:57.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-13T00:55:48.000Z (12 months ago)
- Last Synced: 2024-04-23T02:51:11.962Z (8 months ago)
- Topics: async-storage, deep-linking, expo, expo-image-picker, firebase-cloud-messaging, native-base, react-hook-form, react-native, react-native-onesignal, react-navigation, typescript, zod
- Language: TypeScript
- Homepage:
- Size: 6.38 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Ignite Gym App 🏋️
---
## About
Ignite Gym is a mobile app with lots of gym exercises, separated by muscle group, with instructions on how to do them.
In addition, you can mark a exercise as completed and view all completed exercises in history, grouped by day. In the application, it is possible to create a new account and log in, as well as edit your profile, as well as update your avatar.
This app uses a refresh token strategy to keep the user signed in and the auth flow uses a JWT.
The **push notification strategy** was also implemented to remind the user to practice or even notify about a new exercise. Additionally, **deep linking** was also implemented to redirect based on notifications.
The project was developed using these technologies:
- TypeScript
- React Native
- Expo Dev Client
- Expo Image Picker (*used to select and edit user avatar*)
- NativeBase (*component library*)
- React Navigation (*stack and tab navigation*)
- Axios (*HTTP client*)
- Async Storage (*used to local storage of user and token*)
- One Signal (*used to send push notifications*)
- Firebase Cloud Messaging (*used with One Signal to send notifications on Android devices*)
- React Hook Form
- ZodFinally, this project was developed in the React Native training in the [**Rocketseat**](https://github.com/rocketseat-education) **Ignite** course. The main purpose of this app was to practice using a **component library, such as NativeBase, and bottom tab navigation, as well as backend integration, with authentication flow**. In addition, it was possible to practice using the **Context API and React Hooks**, always following good coding practices.
[**Access the project layout in Figma**](https://www.figma.com/community/file/1163926136397847279)
## Instructions
- Requirements:
- [Node.js LTS](https://nodejs.org/en)1. Clone the repository and install the dependencies:
```sh
git clone https://github.com/luismda/ignite-gym.git
``````sh
npm i
```2. Clone the back-end project used in this app (created by [rodrigorgtic](https://github.com/rodrigorgtic/ignitegym-api)) and install the dependencies:
```sh
git clone https://github.com/rodrigorgtic/ignitegym-api.git
``````sh
npm i
```3. Run back-end server:
```sh
npm start
```4. Configure the env variables following the `.env.example` file (API URL and One Signal App ID)
5. Run development build:
```sh
npm run android
# or
npm run ios
```6. Start app
```sh
npm start
```6. To preview the app, you can use Expo Go on your physical device or use an Android or iPhone emulator on your computer. See some more details in the [**React Native**](https://reactnative.dev/docs/environment-setup?guide=quickstart) and [**Expo**](https://docs.expo.dev/get-started/expo-go/) documentation.
## Created by
Luís Miguel | [**LinkedIn**](https://www.linkedin.com/in/luis-miguel-dutra-alves/)
##
**#NeverStopLearning 🚀**