6.5 KiB
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
- 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)