![](https://private-user-images.githubusercontent.com/88680118/261874052-c767d13a-c1a2-48a5-be48-d2e5ae51450d.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQwNTItYzc2N2QxM2EtYzFhMi00OGE1LWJlNDgtZDJlNWFlNTE0NTBkLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThhZmM2ZDdmNmQ5MjYzODcxOTE3MWNlY2Y0YWNiMWY2NzQ1ZmU3M2I0NzE0MjcyYzQ1MmQ2ZjJkMTRiZWJkZDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Bgt5ZWm92-0UR5cTzR7LI7Jr0CtLwV8Xfq_ebqayRPA)
![](https://private-user-images.githubusercontent.com/88680118/261874188-e07f58da-ed6b-4b24-af46-374d9482ebea.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQxODgtZTA3ZjU4ZGEtZWQ2Yi00YjI0LWFmNDYtMzc0ZDk0ODJlYmVhLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZiYzQwNGE3ZDY2ZDUxNTE4NjhiOTExNmJhZWMxZGRhNDU2YWFiMTAxM2EzNDZmZWQyNzk4NjZhZWQ5NTc5ZTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.WoMZY4SHeVJWJwicqLoZsuPToM72WUTEEGZQyfAxFnU)
![](https://private-user-images.githubusercontent.com/88680118/261874190-d8e4cce2-8bfd-4c8c-952c-aa85f8653f70.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQxOTAtZDhlNGNjZTItOGJmZC00YzhjLTk1MmMtYWE4NWY4NjUzZjcwLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlkZGJlNzJlYzY3ZWI5YWYzYTk2YmVmYTA0ZjZiMDMyNDA1ODBjZWEzOWRlZjVmNDRkNTdlZGM3MDI2ZTNjOGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.f4BbDmoZB6zQEsl40yBeWNyuRJc399IMjSYo6mT1ZYs)
![](https://private-user-images.githubusercontent.com/88680118/261874191-74008d98-e3db-4063-9f37-f579d8ebdf05.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQxOTEtNzQwMDhkOTgtZTNkYi00MDYzLTlmMzctZjU3OWQ4ZWJkZjA1LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIzMmU2ZDAwMDhiZWU3NjQxYTY1ZDJmZjU5MDk2ZTcyOTI5MjM5MzA4N2UzZmMyNTllMWE0NzZkMjE4MGJlMmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Zi3SqM_o-PFmjPZJ2OORcbQycVC1_TlR7_dCoifi8J8)
![](https://private-user-images.githubusercontent.com/88680118/261874192-7ba35184-e604-4360-9072-34f71dea803c.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQxOTItN2JhMzUxODQtZTYwNC00MzYwLTkwNzItMzRmNzFkZWE4MDNjLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBhMjgyMGRjZTI0OTVjMGZmMWU0ZjE2Mzk3ZmU3YzkyNzE4ZDdhOGY4ODVjYzcyOWEzMjQ4YzhlOWU5ODQ2MDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.1CWABfaWLOQc10GzGYjz1F0TyXGkCxy1NUBAYvGOfS0)
![](https://private-user-images.githubusercontent.com/88680118/261874193-f05668ee-38c4-4d68-94f6-81c1f300a843.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQxOTMtZjA1NjY4ZWUtMzhjNC00ZDY4LTk0ZjYtODFjMWYzMDBhODQzLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM1ZjJlM2Y5YmExMDViMTNlZmE3MWE2NWM3YTFlZDUxNjViNDlmMmQ4MTZhODQ4M2YzYzUxMzkzOGY0YjQ1ZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.OFJSrYz4p8Iu7OeSndEaOhpjJD1pgBdByjRtSP7kbOo)
![](https://private-user-images.githubusercontent.com/88680118/261874196-b109c596-530c-4b76-ba44-dad1ad060c38.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQxOTYtYjEwOWM1OTYtNTMwYy00Yjc2LWJhNDQtZGFkMWFkMDYwYzM4LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZiNWQ3YTlhYTgxMjQ5ZmY3MDM4ZDllMjdiNDI4NjBlNDEwNTIxMzA3MWM3NGUwYjk4Zjc3YTM0Yjg3MGEyYzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.75YGf2KTGzUJeQN_2Kc_PSauhAMF8TQsIwXQB8kZCFY)
![](https://private-user-images.githubusercontent.com/88680118/261874403-8b9826a1-9169-4853-b4b5-28b73e918b84.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM2NTI1MjcsIm5iZiI6MTcyMzY1MjIyNywicGF0aCI6Ii84ODY4MDExOC8yNjE4NzQ0MDMtOGI5ODI2YTEtOTE2OS00ODUzLWI0YjUtMjhiNzNlOTE4Yjg0LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE0VDE2MTcwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTIxZmNjZWQ1MDhhZGI0YjU2YWQ1YjY4MjYyZGI4ZDZlMWU3YzdkODRjNjU0OTdiOWNiMDA5Y2RkYjc5ZDE0ZmUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ZMQLKR1aHLTziJQcqdZCHv9iw63j7-_XNZy7dzYyDLY)
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
- Zod
Finally, this project was developed in the React Native training in the Rocketseat 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
- Requirements:
- Clone the repository and install the dependencies:
git clone https://github.com/luismda/ignite-gym.git
npm i
- Clone the back-end project used in this app (created by rodrigorgtic) and install the dependencies:
git clone https://github.com/rodrigorgtic/ignitegym-api.git
npm i
- Run back-end server:
npm start
-
Configure the env variables following the
.env.example
file (API URL and One Signal App ID) -
Run development build:
npm run android
# or
npm run ios
- Start app
npm start
- 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 and Expo documentation.
Luรญs Miguel | LinkedIn
#NeverStopLearning ๐