Developed the Ignite Gym project in React Native, it is a fitness-oriented application that provides features for user registration, exercise tracking, and execution history.
Below, I will describe each of the main screens of the application:
-
Login Screen:
- On this screen, users can enter their login credentials, such as username and password, to access the application.
- If they don't have an account yet, there is an option to register within the application.
-
Registration Screen:
- In the registration screen, users can fill out a form with their information, such as name, email, and password.
- After filling out the form, they can confirm the registration and create an account within the application.
-
Main Screen:
- After successfully logging in, users will be directed to the main screen.
- On this screen, they will find a list of available exercises to perform.
- Each exercise can be selected to view the execution instructions, which may include a demonstrative video.
-
Workout History Screen:
- In this screen, users can access the history of their previous workout sessions.
- Users can revisit their previous sessions to track their progress over time.
-
Profile Screen:
- The profile screen allows users to view and update their personal information, such as name, profile picture, and password change.
These screens provide a comprehensive experience for users of the Ignite Gym application, allowing them to log in, register, perform exercises, track their progress, and manage their personal information.
- 🧭 Table of contents
- 🎥 Implementation Video
- 🎨 Layout
- 👏 Learning and more Implementations
- 💡 Technologies Used
- 📂 Folder Structure
- 🚀 Running the Project
- 🌎 License
- ✒ Author
Project.Ignite.Gym.mp4
Layout developed by: Rodrigo Gonçalves e Millena Kupsinskü Martins
- Learned how to use NativeBase for building the interface.
- Learned to use the Bottom Navigator.
- Learned to fetch images from the photo gallery using Expo ImagePicker.
- Learned to use React Hook Form for form control and validation using Yup.
- Learned to create Contexts and hooks for data passing to other screens.
- Learned about consuming APIs with Fetch API and Axios.
- Learned about JWT Authentication and how to use it for data retrieval.
- Learned to upload images to the database.
- Learned about refresh tokens to automatically retrieve a new token when it expires.
- React Native
- Expo
- TypeScript
- NativeBase
- React Navigation - Native Stack and Bottom Tabs
- Axios
- Expo ImagePicker
- Expo FileSystem
- React Hook Form
- Yup
- AsyncStorage
mobile
.
├── assets # Images for expo
├── src # Source files
│ ├── @types # Contains all global definitions of types and interfaces
│ ├── assets # Contains Js bundles assets. e.g: icons, splash, images etc...
│ ├── components # Contains all global react components
│ ├── contexts # Application context
│ ├── dtos # Models Data Base
│ ├── hooks # Application hooks
│ ├── routes # Contains application routes
│ ├── screens # Contains application screens
│ ├── services # Config service api
│ ├── storage # Contains saving data in locations.
│ ├── theme # Contains the theme of the application
│ ├── utils # Class utils for system
.
.
├── App # Bundle entry
.
Clone the project
git clone https://github.com/VagnerNerves/ignitegym-rn.gitEnter the project directory
cd ignitegym-rn\serverInstall with dependencies
npm installStart the server
npm run devAccess the README.md file in the server folder to see other commands.
Clone the project
git clone https://github.com/VagnerNerves/ignitegym-rn.gitEnter the project directory
cd ignitegym-rn\mobileInstall with dependencies
npm installStart the server
npx run startThis project is under the MIT license. See the LICENSE file for more details.
Made with love and hate 😅, get in touch!