Gym Manager is a comprehensive gym management system with Angular frontend and Spring Boot backend. The system allows tracking member activities, managing personal information, creating workout plans, and analyzing progress.
- Framework: Spring Boot 3.5.4
- Language: Java 24
- Database: MySQL with JPA/Hibernate
- Architecture: RESTful API with layered architecture
- Controller β Service β Repository β Entity
- Dependencies: Spring Web, Spring Data JPA, MySQL Connector, Lombok
- Framework: Angular 20.0.5
- Language: TypeScript
- Architecture: Component-based with services
- Register and manage member information
- Track membership types and expiration dates
- Manage detailed personal information
- Record workout activities
- Classify workout types (Cardio, Strength Training, etc.)
- Track start/end times
- Automatic calorie calculation
- Create workout plans for members
- Track equipment usage
- Notes and intensity assessment
- Activity statistics over time
- Workout trend analysis
- Progress reports for each member
- JWT login support (in development)
- Role & access control middleware
- Sensitive data encryption (planned)
POST /manager/activity # Create new activity
GET /manager/activity/{id} # Get activity by ID
GET /manager/activities/user/{userId} # Get user activities
GET /manager/activities # Get all activities
PUT /manager/activity/{id} # Update activity
DELETE /manager/activity/{id} # Delete activity
{
"userId": 1,
"startTime": "2024-01-15T10:00:00",
"endTime": "2024-01-15T11:00:00",
"activityType": "CARDIO",
"activityName": "Running",
"equipment": "Treadmill",
"intensityLevel": "HIGH",
"notes": "Great workout session"
}{
"id": 1,
"userId": 1,
"startTime": "2024-01-15T10:00:00",
"endTime": "2024-01-15T11:00:00",
"activityType": "CARDIO",
"activityName": "Running",
"duration": 60,
"caloriesBurned": 450,
"equipment": "Treadmill",
"intensityLevel": "HIGH",
"notes": "Great workout session"
}Create .env file or use environment variables:
# Database
DB_URL=jdbc:mysql://localhost:3306/gym_manager
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
# JWT Secret
JWT_SECRET=your_jwt_secret_key
# Server Configuration
SERVER_PORT=8080- Java 24
- Node.js 18+
- MySQL 8.0+
- Maven 3.6+
- Angular CLI 20.0.5+
git clone https://github.com/Lakeserl/gym-manager.git
cd gym-managercd server
# Install dependencies
mvn clean install
# Configure database
# Edit application.properties with your MySQL information
# Example: spring.datasource.url=jdbc:mysql://localhost:3306/gym_manager
# Run database migration
mysql -u [your_username] -p [your_database] < database_migration.sql
# Run application
mvn spring-boot:runBackend will run at: http://localhost:8080
cd client
# Install dependencies
npm install
# Run application
ng serveFrontend will run at: http://localhost:4200
- Spring Boot 3.5.4: Main framework
- Spring Data JPA: ORM and database access
- MySQL: Database
- Lombok: Reduce boilerplate code
- Maven: Build tool and dependency management
- Angular 20.0.5: Main framework
- TypeScript: Programming language
- Angular CLI: Development tools
- CSS3: Styling
- Automatic Calorie Calculation: Calculate calories based on activity type and intensity
- Duration Calculation: Automatically calculate time from start/end time
- Validation: Input data validation
- Error Handling: Comprehensive error handling
- User-Activity Relationship: Link activities to specific members
- Activity Classification: Clear classification of workout types
- Equipment Tracking: Track equipment usage
- Progress Tracking: Notes and progress assessment
cd server
mvn spring-boot:runcd client
ng servemysql -u [your_username] -p [your_database] < server/database_migration.sqlcd server
mvn testcd client
ng test- Configure production database
- Change JWT secret keys
- Configure CORS for production domain
- Use HTTPS
- Configure logging and monitoring
- Database backup strategy
- Load balancing (if needed)
# Backend Dockerfile
FROM openjdk:24-jdk-slim
COPY target/server-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]This project is licensed under the MIT License - see the LICENSE file for details.