Skip to content

Application which contains useful functionalities for powerlifting athlete

Notifications You must be signed in to change notification settings

dslwa/PowerliftingApp

Repository files navigation

🏋️ Powerlifting App

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.


📌 Features

🖥️ Modern Single-Window Interface

  • 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!

👤 Athlete Management

  • 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

📊 Competition Overview

  • 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

Table

  • 📥 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

    • Double-click any athlete row to view progress charts
    • Charts displayed in clean dialog overlay
    • Visualizations include:
      • Total vs Weight scatter plot
      • Automatic axis scaling
      • Data points for all competition dates Table

🎨 Interface

Single-Window Design

  • 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

Styling

  • 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

GUI


🚀 How to Run

Option 1: Pre-built Executable JAR (Recommended)

# Windows
run.bat

# Linux/Mac
./run.sh

Option 2: Build from Source

# Build the project
./mvnw clean package

# Run the application
java -jar target/PowerliftingApp.jar

Option 3: Using Maven

./mvnw javafx:run

Requirements:

  • Java 20 or higher
  • Maven (included as wrapper)

🛠️ Technologies Used

  • 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

📁 Project Structure

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

🧪 Testing

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 test

All tests passing: ✅ 8/8 tests


📦 Build Information

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)

🚀 Future Plans

  • 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.

About

Application which contains useful functionalities for powerlifting athlete

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages