# 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:** ```bash pip install -r requirements.txt ``` 3. **Enable Development Mode:** For PowerShell: ```powershell $ENV:FLASK_ENV='development' ``` For bash/zsh: ```bash 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: ```powershell $Env:DATABASE_URL = 'postgres://username:password@host:port/database_name' ``` For bash/zsh: ```bash 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:** ```bash 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)