MyFitnessPal is a console-based fitness tracking application written in C++ that saves data in .csv
files. This project provides an efficient way to manage your fitness journey, including tracking meals, workouts, and user metrics.
- Console-Based UI: Utilizes ANSI escape codes for colorful and dynamic interaction.
- ASCII Art: Displays stylish ASCII titles for enhanced user experience.
- User Management:
- Sign In: Create a user profile by providing details such as username, password, body measurements, activity level, and goals.
- Log In: Access your profile to view and manage fitness data.
- Passwords are securely hashed to protect user information.
- Daily Overview:
- Displays the current date, goal, activity level, and macronutrient information (for Premium users).
- Lists meals and workouts for the day.
- Allows navigation to view data for previous and next days.
- Data Persistence:
- Saves all user data in
.csv
files for easy storage and retrieval. - Each entry in the
.csv
files is identified by a unique GUID.
- Saves all user data in
- File Relationships:
users.csv
: Stores user information.meals.csv
: Stores meal data.goals.csv
: Stores user fitness goals.workouts.csv
: Stores workout data.dailySummaries.csv
: Stores daily summaries of meals, workouts, and progress.- Relationships between these files are established using IDs (GUIDs), allowing efficient cross-referencing of data.
- Data Manipulation Commands: Intuitive commands to add, update, delete, and navigate fitness data.
The application runs directly in the console. Here's an overview of its functionality:
-
Main Menu:
- Log In: Enter your username and password to access your profile.
- Sign In: Create a new profile by inputting the following:
- Username
- Password
- Body measurements (weight, height, etc.)
- Activity level
- Fitness goal (e.g., weight loss, muscle gain).
- Exit: Quit the application.
-
User Dashboard (after login):
- Displays the date, goal, activity level, and macronutrient breakdown (if Premium).
- Lists all meals and workouts for the current day.
-
Commands:
-
Add Data:
aw
orwa
: Add a workout to the list.am
orma
: Add a meal to the list.
-
Update Data:
um<number>
: Update a specific meal by providing the meal number.uw<number>
: Update a specific workout by providing the workout number.uu
: Update user details (e.g., weight, activity level).
-
Delete Data:
dm<number>
: Delete a specific meal by providing the meal number.dw<number>
: Delete a specific workout by providing the workout number.delete
: Delete all data for the current day.
-
Navigation:
<
: Move to the previous day.>
: Move to the next day.
-
Exit:
e
: Exit the application.
-
I'm Stefan Hristov!
- 📫 How to reach me: [email protected]
- 👨🏻💻 Most of my projects are available on Github
- 📫 Connect with me on LinkedIn