|
We connect fitness enthusiasts, enabling plan creation, progress tracking, and friendly competition.
About • Technologies • Features • Gallery • Getting Started • Testing • Authors
GymEaze is a modern fitness system that combines an advanced workout journal with a social media platform. The application's goal is not only to track results but also to build a community that motivates each other through content sharing, commenting, reacting to content posted by other users, a badge system, personalized training plans, and much more.
The project was implemented in a three-tier architecture, ensuring scalability and separation of concerns:
- Server Layer (Backend): Efficient and scalable API implementing core business logic. Ensures high security standards through integration with Google OAuth. Data is stored in a cloud-based MongoDB Atlas database, and multimedia management (photos, videos) is handled through Cloudinary service.
- Web Layer (Frontend): Modern SPA application built on React and TypeScript. Utilizes component architecture with TailwindCSS and shadcn/ui libraries. The project emphasizes digital accessibility (WCAG) with proper color contrast and full keyboard interface support. React Query handles API communication and server state management, ensuring smooth operation and network query optimization.
- Mobile Layer (Mobile): Native Android application created in Kotlin using the modern declarative UI framework Jetpack Compose. The project is based on the MVVM architectural pattern, ensuring clean code and easy testing.
The project uses a modern technology stack ensuring performance and scalability.
- Role System:
- Guest: Ability to browse exercise database, plans, and posts (read-only mode).
- Logged-in User: Full access to interactions, creators, and progress tracking.
- Cross-Platform: Ability to be logged in simultaneously on web and mobile applications.
- User Profile: Personalization of data (weight, height, goals, BMI), privacy management, avatar, badge pinning, and additional profile information.
- Themes: Full support for dark and light themes on both platforms.
- Comprehensive Plan Creator: Create plans up to 30 days, divided into weeks, with options to duplicate days/weeks for faster editing.
- Custom Exercises: Ability to add custom exercises to global or private database.
- Content Visibility: Users decide whether their plan/exercise is public or private.
- Favorites: System for saving interesting plans and exercises for later.
- Step-by-Step Mode: Interactive workout execution mode. The app guides through exercises, counts rest periods and sets.
- Progress Tracking: Marking training days, resetting progress, or removing started plans.
- Synchronization: Progress in the mobile app is visible on the web profile.
- Interactions: Like system and two-level comment system (main comment + reply) under posts, plans, and exercises.
- Following: Ability to follow other users (Follow/Unfollow) and view their activity and profiles.
- Gamification: Earning badges visible in profile (e.g., for account longevity or created plans).
- Moderation: Removing inappropriate content (posts, exercises, plans, comments).
- User Management: Blocking accounts, sending global system notifications.
Below are the most important views of the application.
| Plan Creator (30 days) | Profile and Statistics | Admin Panel |
|---|---|---|
| Plan editing view divided into weeks | Profile view with badges and BMI chart | Managing reports and users |
![]() |
![]() |
![]() |
| Training Mode (Step-by-step) | Social Feed & Comments | Settings and Themes |
|---|---|---|
| Active exercise screen | Discussion view under exercise | Light mode and privacy settings |
![]() |
![]() |
![]() |
To run the project locally, follow the instructions below for each module.
- Node.js (v18+)
- Android Studio (for mobile module)
- MongoDB (local or Atlas)
git clone https://github.com/username/gym-eaze.git
cd gym-eazeFor login to work properly, you need to configure a project in Google Cloud Console:
- Go to API & Services > Credentials.
- Click Create Credentials > OAuth client ID.
- Create Android Client:
- Package name:
com.example.gymeaze - SHA-1: Your debug key fingerprint (get it in Android Studio > Gradle > Tasks > android > signingReport).
- Package name:
- Create Web Application Client:
- Authorized JavaScript origins:
http://localhost:5173http://localhost
- Authorized redirect URIs:
http://localhost:5173https://developers.google.com/oauthplayground
- Authorized JavaScript origins:
- Important: Copy the generated
CLIENT_ID(Web Application type) – it will be needed in backend, frontend, and mobile app configuration.
cd backend
npm install-
Rename the file .env.example to .env.
-
Fill in the keys in .env
-
Start the server:
npm run devcd frontend
npm install-
Rename the file .env.example to .env.
-
Fill in the keys in .env
-
Start the server:
npm run devApplication available at: http://localhost:5173
-
Navigate to the mobile/ directory.
-
Create a local.properties file (if it doesn't exist) in the main mobile/ directory.
-
Paste and fill in the configuration below:
## This file is not versioned. Contains local paths and keys.
# Path to SDK (usually auto-generated by Android Studio)
# Windows: C:\Users\YourName\AppData\Local\Android\Sdk
# Mac/Linux: /Users/YourName/Library/Android/sdk
sdk.dir=YOUR_PATH_TO_SDK
# Backend address
# (For Android emulator, localhost is usually 10.0.2.2)
API_URL="http://10.0.2.2:5000"
# Client ID from Google Cloud Console (Web Client ID)
GOOGLE_CLIENT_ID="YOUR_GOOGLE_CLIENT_ID"- Open the project in Android Studio, wait for Gradle synchronization (this may take a moment), and run the application on an emulator.
Verification of system functionality was conducted through manual testing, covering both business logic and user interface.
-
Backend & API: REST API endpoint verification was performed using Insomnia tool. We checked:
- Correctness of HTTP response codes (200, 400, 401, 500).
- Security functionality (JWT, authorization middleware).
- Input data validation (e.g., when creating plans).
-
Key Manual Scenarios:
- Cross-Platform Synchronization: Creating a plan in the web application and immediately starting a workout in the mobile application.
- OAuth 2.0: Google login and user session refresh.
- Multimedia Handling: Uploading photos and videos to Cloudinary and their proper rendering on different devices.
- Admin Panel: Attempting to access the admin panel from a regular user account (access blocked).
- Training Cycle: Complete step-by-step mode on mobile, from start to saving workout history.
💡 And much more... We've taken care of dozens of small UX/UI details that you'll discover while using the application.
Behind the GymEaze project is a trio of code and sports enthusiasts. Each of us brought different strengths to deliver this project to completion.









