ZenithActive is an advanced fitness management application designed to streamline the management of fitness centers and member services. With a holistic approach to health and fitness management, ZenithActive offers comprehensive solutions for fitness centers, trainers, and users seeking personalized workout and diet plans. Built with scalability in mind, the application supports a wide range of functionalities, from membership management to diet generator algorithm.
- Spring Boot 3.1.6
- Postgres
- Docker
- JUnit 5
- Mockito
- Spring Security with JWT
- AWS S3
- OpenWeatherMap (API for weather info)
- Zxing (QR code generation)
- Twilio (SMS notifications)
- Prometheus (monitoring)
- Jenkins (CI/CD)
-
User and Role Management: Ability to add users with different roles (member, instructor).
-
Facility Management: Creation of new Facility objects.
-
Courses and Sessions: Creating courses and sessions assigning them to specific facilities and time slots.
-
Session Enrollment: Allowing members to enroll in sessions.
-
Course/Instructor Reviews: Adding reviews to courses and instructors.
-
Membership Types: Options for enrolling in different types of memberships.
-
Newsletter: Newsletter functionality for updates and announcements.
-
Notifications: Sending emails and SMS for promotions and reminders.
-
Personalized Training Plans: Generating PDFs with training plans.
-
Training Plans Storage: o improve performance and data management, training plans generated by the app are now stored directly in an AWS S3 bucket instead of being saved in the database as file paths.
-
QR Codes: Generating QR codes for access to specific facilities.
-
Loyalty Points System: Managing loyalty points for members.
-
Diet generator: Algorithm for generating diet based on request and meal recommendation system.
-
Work schedule: Manage employees' schedules
-
Connect to weather API: User can check what the weather forecast will be for a given session day
-
Profile pictures: Users can now upload and manage their profile pictures, enhancing personalization within the app. These images are securely stored in a dedicated AWS S3 bucket, ensuring fast access and high data security.
- Allow exchanging loyalty points for rewards.
- Possibility for members to add meals.
- Generating a diet based on the given ingredients.
- Informing about dangerous weather events and inviting users to indoor sessions.
- Java 17
- Docker installed on your machine.
-
Clone the repository:
git clone https://github.com/Shanzeee/ZenithActive.git cd ZenithActive
-
Build the Docker image:
docker build -t zenith-active .
-
Run Docker Compose:
docker-compose up -d
This command will start containers with the ZenithActive application, PostgreSQL, pgAdmin, Jenkins, Prometheus, and Grafana as defined in the docker-compose.yml file.
-
Create PostgreSQL Database:
Make sure to create a PostgreSQL database named "zenith" before running the application. You can use the following SQL commands as a reference:
CREATE DATABASE zenith;
Or use pgAdmin available at: http://localhost:5050
Once the containers are up and running, you can access the ZenithActive application at http://localhost:8080.
- PostgreSQL: http://localhost:5432
- pgAdmin: http://localhost:5050 (Default credentials: Email: [email protected], Password: admin)
- Jenkins: http://localhost:8081
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (Default credentials: Username: admin, Password: admin)
docker-compose down
This command will stop and remove the running containers.
- Ensure that ports 8080, 5432, 5050, 8081, 9090, and 3000 are not in use by other applications on your machine.
- Customize environment variables and configurations in the docker-compose.yml file as needed.
- You can modify the Dockerfile and other configuration files based on your application's requirements.
Click here to download schema in drawio
Application exposes a robust API with over 60 endpoints to cater to various functionalities. For detailed information on each endpoint, you can explore the API documentation using Swagger UI. After launching the application, visit http://localhost:8080/swagger-ui/index.html#/ to interactively explore and understand the available endpoints, request parameters, and response structures.
ZenithActive is released under the MIT License.
The MIT License is a permissive open-source license that allows for the free use, modification, and distribution of ZenithActive. Whether you are a fitness center looking to integrate ZenithActive into your operations or a developer interested in contributing to its enhancement, you are welcome to do so within the terms of the MIT License.
I believe in the collaborative spirit of the open-source community, and the MIT License reflects our commitment to fostering a transparent and accessible platform for the benefit of fitness enthusiasts, administrators, and developers alike.
Feel free to explore, modify, and contribute to ZenithActive within the bounds of the MIT License. Let's build a healthier and more connected future together! :)
Kacper Barwiński - [email protected]
Project Link: https://github.com/Shanzeee/ZenithActive