140 lines
6.5 KiB
Markdown
140 lines
6.5 KiB
Markdown
# 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)
|
|
|