JavaFX desktop application designed for managing powerlifting competitions and athlete statistics. Built with passion to assist coaches, athletes, and enthusiasts in analyzing lifter performance, and calculating key training metrics.
- Tabbed Navigation - Everything in one window with easy tab switching
- Competition Table Tab - View and manage all athletes in one place
- Add Athlete Tab - Simple form to add new competitors
- Calculator Tab - Access all powerlifting calculators
- No more popup windows cluttering your screen!
- Add athletes with comprehensive data:
- Personal info (name, age, sex)
- Body measurements (height, weight, weight category)
- Federation affiliation
- Lift results (squat, bench, deadlift)
- Competition date tracking
- Auto-clearing form after successful save
- Real-time validation and error messages
- View all lifters in a professional, sortable table
- Sort by Total, Body Weight, or IPF GL Score
- Dual search functionality:
- Search by name
- Search by federation
- Real-time search filtering
- Double-click any row to view athlete progress charts
-
📥 CSV Export / Import
- Save competition results to CSV file
- Load existing data from CSV
- Success/failure notifications
- File chooser dialog integration
-
📈 Training Calculators
- BMI: Body Mass Index calculator
- FFMI: Fat-Free Mass Index
- BMR: Basal Metabolic Rate
- IPF GL Score: Based on event type and sex
- 1RM: One-Rep Max (McGlothin formula)
- Meet Attempts: Generate 3 attempts based on RPE
- All calculators accessible from dedicated tab
-
📅 Progress Visualization
- No more modal popups - Everything runs in one cohesive window
- Tab-based navigation - Switch between sections instantly
- Responsive layout - Adapts to window resizing
- Minimum window size: 800x600, default: 1000x700
- Modern JavaFX layout with professional aesthetics
- Custom CSS featuring sleek dark theme
- Enhanced visual effects:
- Smooth gradients and drop shadows
- Button hover animations and scale effects
- Focus state indicators
- Professional red & black color scheme
- Custom-styled tabs with active state highlighting
- Grid-based forms for better organization
- Icon-enhanced buttons for better UX
# Windows
run.bat
# Linux/Mac
./run.sh# Build the project
./mvnw clean package
# Run the application
java -jar target/PowerliftingApp.jar./mvnw javafx:runRequirements:
- Java 20 or higher
- Maven (included as wrapper)
- Java 20 - Programming language
- JavaFX 20 - Modern UI toolkit
- Maven - Dependency management and build system
- Maven Shade Plugin - Creates executable fat JAR
- CSS3 - Advanced styling with gradients and effects
- JUnit 5 - Unit testing framework
src/
├── main/
│ ├── java/
│ │ └── com/example/powerlifting_app/
│ │ ├── Core/ # Logic (Athlete, Result, Competition)
│ │ ├── GUI/ # Forms, tables, charts
│ │ ├── Utils/ # CSV import/export
│ │ └── HelloApplication.java
│ │ └── HelloController.java
│ └── resources/
│ └── com/example/powerlifting_app/
│ ├── style.css # Styling
│ └── logo.jpg # Icon
└── test/
└── java/
└── com/example/powerlifting_app/
└── CoreClassTests.java # Unit tests
Unit tests written with JUnit 5 to ensure correctness of:
- Athlete BMI calculation
- Total and IPF GL computation
- Sorting mechanisms in Competition
- CSV export/import functionality
Run tests:
./mvnw testAll tests passing: ✅ 8/8 tests
The build process creates:
- PowerliftingApp.jar (40MB) - Executable fat JAR with all dependencies included
- Powerlifting_App-1.0.jar (35KB) - Lightweight JAR (requires dependencies)
The fat JAR includes:
- JavaFX runtime libraries
- ControlsFX UI components
- Ikonli icon library
- All application resources (CSS, FXML, images)
- SQLite database integration
- Authentication and user profiles
- Additional calculators (e.g. Wilks, Sinclair)
- Native installer (using jpackage)
- Export to PDF reports
- Dark/Light theme toggle
Built with 💪 by a powerlifting enthusiast and aspiring software developer.


