Files
workout/readme.md
2026-01-29 00:10:55 +11:00

6.5 KiB

Workout Tracker

A comprehensive web application designed to help users track their workouts, monitor progress over time, and manage fitness-related data.

Setup

  1. Install Python: Ensure you have Python 3 installed (python>3).
  2. Install Dependencies:
    pip install -r requirements.txt
    
  3. Enable Development Mode: For PowerShell:
    $ENV:FLASK_ENV='development'
    
    For bash/zsh:
    export FLASK_ENV='development'
    
  4. Set Database URL: Configure your database connection string. You can set up a local PostgreSQL database and use the migration scripts, or connect to an existing deployed database. For PowerShell:
    $Env:DATABASE_URL = 'postgres://username:password@host:port/database_name'
    
    For bash/zsh:
    export DATABASE_URL='postgres://username:password@host:port/database_name'
    
  5. Run Migrations (if applicable): If you're setting up a new database, you might need to run database migrations. (Assuming Flask-Migrate or similar is used - check project for specific commands if any, e.g., flask db upgrade)
  6. Start Application:
    flask run
    
    The application should now be running, typically at http://127.0.0.1:5000/.

Features

This application boasts a rich set of features to enhance your workout tracking experience:

  • User Authentication & Authorization:
    • Secure user registration and login.
    • Password hashing for security.
    • Session management with logout functionality.
  • Workout Logging:
    • Track exercises, sets, reps, and weights.
    • Record top sets for each workout to monitor personal bests.
    • Add notes to workouts.
    • Tag workouts for better organization and filtering.
  • Dashboard:
    • At-a-glance overview of recent activity and progress.
  • Calendar View:
    • Visualize workout history on a calendar.
  • Exercise Management:
    • Add, view, and manage a list of exercises.
  • Progress Tracking & Statistics:
    • View detailed statistics and graphs of your performance over time.
    • Track personal records and trends.
    • Graphs for individual users/people.
  • Workout Programs:
    • Create, view, and manage structured workout programs.
  • Data Export:
    • Export your workout data.
  • Notes:
    • A dedicated section for general fitness-related notes.
  • SQL Explorer:
    • An advanced feature for users to query the database directly (likely for admin or power users).
  • API Endpoints:
    • Provides API access to various application functionalities.
  • Changelog:
    • Track updates and changes to the application.
  • Multi-User Support:
    • Designed to support multiple users, each with their own private data.

Project Structure Overview

  • app.py: Main Flask application file.
  • config.py: Application configuration settings.
  • db.py: Database interaction utilities.
  • extensions.py: Flask extension initializations.
  • features/: Contains modules for core application features like dashboard, exercise management, stats, etc.
  • forms/: WTForms definitions for login, signup, etc.
  • migrations/: Database migration scripts (if using Flask-Migrate).
  • routes/: Blueprint definitions for different parts of the application. This directory modularizes the web endpoints:
    • auth.py: Handles user authentication, including signup, login, and logout functionalities.
    • calendar.py: Manages routes related to displaying workout data in a calendar format.
    • changelog.py: Provides endpoints for viewing application changes and updates.
    • endpoints.py: Defines API endpoints for programmatic access to application data and features.
    • export.py: Contains routes for exporting user data, likely in formats like CSV or JSON.
    • notes.py: Manages CRUD (Create, Read, Update, Delete) operations for user notes.
    • programs.py: Handles routes related to creating, viewing, and managing workout programs.
    • sql_explorer.py: Provides the backend for the SQL Explorer feature, allowing direct database queries.
    • tags.py: Manages routes for creating, assigning, and filtering workout tags.
    • workout.py: Contains the core routes for logging, viewing, and managing workouts and their associated data (sets, exercises, etc.).
  • static/: Static assets like CSS, JavaScript, and images.
  • templates/: HTML templates for rendering web pages.

Future Enhancements / Feature Ideas

Here are some ideas for new features and improvements that could be added to the Workout Tracker:

  • Social Features:
    • Friend system: Allow users to connect with friends.
    • Shared workouts/programs: Option to share workout plans or achievements with friends.
    • Leaderboards: Optional leaderboards for friendly competition (e.g., most workouts logged, PR improvements).
  • Advanced Analytics & Reporting:
    • Body measurement tracking (weight, body fat %, etc.) and correlation with workout data.
    • More detailed exercise-specific progress charts (e.g., 1RM progression for specific lifts).
    • Volume tracking (total weight lifted per workout/week/month).
    • Rest timer integration within workout logging.
  • Goal Setting & Tracking:
    • Allow users to set specific fitness goals (e.g., "Bench Press 100kg", "Run 5km in 25 mins").
    • Track progress towards these goals.
  • Exercise Library Enhancements:
    • Ability to add exercise demonstration videos or images.
    • Categorization by muscle group or equipment.
    • User-contributed exercise variations.
  • Mobile-First Responsive Design:
    • Ensure the application is fully usable and looks great on mobile devices.
  • Offline Support / PWA:
    • Progressive Web App (PWA) capabilities for offline access or a more app-like experience.
  • Notifications & Reminders:
    • Reminders for scheduled workouts.
    • Notifications for hitting personal records or achieving goals.
  • Data Import:
    • Allow users to import workout data from other apps or CSV files.
  • Customizable Dashboard:
    • Allow users to customize the information and widgets displayed on their dashboard.
  • Workout Templates:
    • Pre-built workout templates for common goals (e.g., strength, hypertrophy, endurance).
  • Integration with Wearables:
    • Ability to sync data from fitness trackers (e.g., Garmin, Fitbit, Apple Watch).

Contributing

(Details on how to contribute to the project, if applicable. e.g., coding standards, pull request process)