62080b97a4561b9e273c327891504bf38b0b0c88
Workout Tracker
A comprehensive web application designed to help users track their workouts, monitor progress over time, and manage fitness-related data.
Setup
- Install Python: Ensure you have Python 3 installed (
python>3). - Install Dependencies:
pip install -r requirements.txt - Enable Development Mode:
For PowerShell:
For bash/zsh:
$ENV:FLASK_ENV='development'export FLASK_ENV='development' - 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:
For bash/zsh:
$Env:DATABASE_URL = 'postgres://username:password@host:port/database_name'export DATABASE_URL='postgres://username:password@host:port/database_name' - 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) - Start Application:
The application should now be running, typically at
flask runhttp://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)
Description
Languages
HTML
47.9%
Python
35.4%
Jupyter Notebook
15%
PLpgSQL
1%
CSS
0.7%