{"id":26694412,"url":"https://github.com/kurulko/workout-tracker","last_synced_at":"2026-04-02T03:11:07.680Z","repository":{"id":274296200,"uuid":"863876537","full_name":"Kurulko/Workout-Tracker","owner":"Kurulko","description":"Web application to track your fitness progress","archived":false,"fork":false,"pushed_at":"2025-06-03T13:14:50.000Z","size":14524,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-12T00:48:11.440Z","etag":null,"topics":["angular","asp-net-core","asp-net-core-identity","asp-net-core-web-api","automapper","clean-architecture","entity-framework-core","html-css","jwt","netcore","swagger","typescript","xunit"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kurulko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-27T04:48:22.000Z","updated_at":"2025-06-03T10:47:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"ddeab99a-b8ce-4e9d-90f1-0d0c6b99f74c","html_url":"https://github.com/Kurulko/Workout-Tracker","commit_stats":null,"previous_names":["kurulko/workout-tracker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kurulko/Workout-Tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kurulko%2FWorkout-Tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kurulko%2FWorkout-Tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kurulko%2FWorkout-Tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kurulko%2FWorkout-Tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kurulko","download_url":"https://codeload.github.com/Kurulko/Workout-Tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kurulko%2FWorkout-Tracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31294912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:43:37.129Z","status":"online","status_checked_at":"2026-04-02T02:00:08.535Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","asp-net-core","asp-net-core-identity","asp-net-core-web-api","automapper","clean-architecture","entity-framework-core","html-css","jwt","netcore","swagger","typescript","xunit"],"created_at":"2025-03-26T18:29:27.931Z","updated_at":"2026-04-02T03:11:07.639Z","avatar_url":"https://github.com/Kurulko.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WorkoutTracker\n\nWorkoutTracker is a web application designed to help users track their fitness progress through workouts, exercises, body and muscle measurements, and more. It offers a seamless experience through an **Angular frontend** and a **.NET Core backend**, providing robust tracking and reporting features.\n\n---\n\n## Table of Contents\n\n- [Features](#features)\n- [Technologies Used](#technologies-used)\n- [Project Structure](#project-structure)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Environment Configuration](#environment-configuration)\n- [Running](#running)\n- [API Documentation](#api-documentation)\n- [Internal Pages](#internal-pages)\n\n---\n\n## Features\n\nWorkoutTracker provides the following features:\n\n1. **User Authentication and Authorization**\n   - Secure user registration and login with JWT-based authentication.\n   - Role-based access control (admin/user roles).\n   - Password management (change/reset).\n\n2. **Workout Tracking**\n   - Log exercises with sets, reps, weight, and duration.\n   - View workout history and track progress over time.\n   - Add personal workout routines.\n\n3. **Muscles, Exercises and Equipments Management**\n   - View muscles, exercises and equipments and filter them.\n   - Create your own exercises and equipments.\n\n4. **Body and Muscle Measurements Tracking**\n   - Record weight and muscle measurements over time.\n   - Progress visualization via charts.\n\n5. **User Profile Management**\n   - Update your username and email.\n   - Update profile details and preferences.\n\n7. **Admin Dashboard**\n   - Manage users and roles.\n   - Impersonate users.\n\n8. **Responsive Design**\n   - Mobile-friendly interface with Angular Material.\n\n---\n\n## Technologies Used\n\n### **Back-end (ASP.NET Core)**\n- **ASP.NET Core 6** - Backend API framework.\n- **Entity Framework Core 6** - Database interaction and ORM.\n- **Microsoft SQL Server** - Relational database storage.\n- **AutoMapper** - Object-to-object mapping.\n- **xUnit** - Unit testing framework.\n- **Newtonsoft.Json** - JSON processing\n- **Swagger** - API documentation\n- Logging: **Serilog**\n- Authentication: **JWT (JSON Web Token)**\n\n#### Back-end Packages:\n```\n \u003cItemGroup\u003e\n    \u003cPackageReference Include=\"AutoMapper\" Version=\"13.0.1\" /\u003e\n    \u003cPackageReference Include=\"Microsoft.AspNetCore.Authentication.JwtBearer\" Version=\"6.0.0\" /\u003e\n    \u003cPackageReference Include=\"Microsoft.AspNetCore.Identity.EntityFrameworkCore\" Version=\"6.0.0\" /\u003e\n    \u003cPackageReference Include=\"Microsoft.AspNetCore.Mvc.NewtonsoftJson\" Version=\"6.0.0\" /\u003e\n    \u003cPackageReference Include=\"Microsoft.EntityFrameworkCore\" Version=\"6.0.0\" /\u003e\n    \u003cPackageReference Include=\"Microsoft.EntityFrameworkCore.SqlServer\" Version=\"6.0.0\" /\u003e\n    \u003cPackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" /\u003e\n    \u003cPackageReference Include=\"Serilog.Settings.Configuration\" Version=\"7.0.0\" /\u003e\n    \u003cPackageReference Include=\"Serilog.Sinks.MSSqlServer\" Version=\"6.0.0\" /\u003e\n    \u003cPackageReference Include=\"Swashbuckle.AspNetCore\" Version=\"6.2.3\" /\u003e\n    \u003cPackageReference Include=\"System.Linq.Dynamic.Core\" Version=\"1.4.5\" /\u003e\n  \u003c/ItemGroup\u003e\n```\n### **Front-end (Angular)**\n- **Angular 16** - Component-based frontend framework.\n- **Angular Material** - UI components and responsive design.\n- **RxJS** - Reactive programming with observables.\n- **SCSS** - CSS preprocessor for styling.\n- **Angular Router** - Client-side navigation.\n- Charts: **Chart.js with ng2-charts**\n- Styling: **Bootstrap 5**\n\n#### Front-end Dependencies:\n```\n\"dependencies\": {\n  \"@angular/material\": \"^16.2.14\",\n  \"chart.js\": \"^3.9.1\",\n  \"ng2-charts\": \"^4.1.1\",\n  \"bootstrap\": \"^5.3.3\"\n}\n```\n\n---\n\n## Prerequisites\n\nTo run the project, make sure you have the following installed:\n\n- **Node.js (v18+)** - JavaScript runtime for running Angular.\n- **Angular CLI (16+)** - CLI tool to manage Angular apps.\n- **.NET 6 SDK** - Required to run the backend.\n- **SQL Server** - Database for data persistence.\n- **Git** - Version control.\n- **npm** - Node Package Manager.\n\n---\n\n## Project Structure\n\n- **Back-End (API)**: `WorkoutTrackerAPI` (ASP.NET Core 6.x)\n- **Front-End**: `WorkoutTracker` (Angular 16.x)\n- **Tests**: `WorkoutTrackerAPI.Tests` (xUnit)\n\nAll parts of the project are included in a single solution folder.\n\n---\n\n## Installation\n\n### Step 1: **Clone the repository**\n   ```\n   git clone https://github.com/Kurulko/Workout-Tracker.git\n   cd WorkoutTracker\n  ```\n### Step 2: **Install Back-End Dependencies**\n\n#### 1. Navigate to the WorkoutTrackerAPI directory:\n```\ncd WorkoutTrackerAPI\n```\n#### 2. Restore the .NET dependencies:\n```\ndotnet restore\n```\n### Step 3. Install Front-End Dependencies:\n#### 1. Navigate to the WorkoutTracker directory:\n```\ncd ../WorkoutTracker\n```\n#### 2. Install the necessary dependencies for the Angular project:\n```\nnpm install\n```\n\n---\n\n## Environment Configuration\n\n### Back-end (ASP.NET)\nModify settings in `WorkoutTrackerAPI/appsettings.json`\n\n#### Configure appsettings.json\n\n##### 1. In the WorkoutTrackerAPI project, locate or create the appsettings.json file in the root folder.\n##### 2. Add your sensitive settings (e.g., connection strings, JWT settings) to appsettings.json:\n\n```\n{\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Server=(localdb)\\\\mssqllocaldb; Database=Workout; MultipleActiveResultSets=True;\"\n  },\n\n  \"JwtSettings\": {\n    \"SecretKey\": \"your-secret-key\",\n    \"Issuer\": \"your-issuer\",\n    \"Audience\": \"your-audience\",\n    \"ExpirationDays\": 7\n  },\n\n  \"Admin\": {\n    \"Name\": \"YourName\",\n    \"Email\": \"youremail@email.com\",\n    \"Password\": \"your-password\"\n  }\n}\n\n```\n\n### Front-end (Angular)\n\n#### Configure Environment Variables\n\n##### 1. Modify `WorkoutTracker/src/environments/environment.prod.ts`:\n```\nexport const environment = {\n  production: true,\n  apiUrl: 'https://your-production-api-url/api'\n};\n```\n\n##### 2. Modify `WorkoutTracker/src/proxy.conf.js`:\n```\nconst PROXY_CONFIG = [\n  {\n    context: [\n      \"/api\",\n      \"/resources\"\n    ],\n    target: \"https://your-production-api-url/api\",\n    secure: false,\n  }\n]\n\nmodule.exports = PROXY_CONFIG;\n```\n\n## Running\n\n### Back-End (ASP.NET Core)\n\n#### 1. Navigate to the WorkoutTrackerAPI directory and run the back-end:\n```\ncd WorkoutTrackerAPI\ndotnet run\n```\nThis will start your back-end server\n\n### Front-End (Angular)\n\n#### 1. Navigate to the WorkoutTracker directory and run the Angular application:\n```\ncd ../WorkoutTracker\nng serve\n```\nThe Angular application will be available at `http://localhost:4200`.\n\n\n## API Documentation\nThe backend API documentation is available via Swagger:\n\nSwagger URL: `https://your-production-api-url/swagger`\nSwagger provides endpoints documentation and testing capabilities.\n\n## Internal Pages\n\n### 1. Workout Pages\n\n#### 1. Workouts Page (`/workouts`)\n- Lists logged workouts.\n![image](https://github.com/user-attachments/assets/154a4d24-6432-4b04-a1f7-08c2fc327bbb)\n- Filtered by name: \n![image](https://github.com/user-attachments/assets/d47d0238-d467-4f03-9c70-462bf3197228)\n\n#### 2. Edit Workout Page (`/workout/{id}`)\n![image](https://github.com/user-attachments/assets/c27f3a78-cb15-4ff9-a740-2bc0c9639f65)\n![image](https://github.com/user-attachments/assets/17074ec1-c920-4683-bd80-7d8cd5523bcb)\n\n#### 3. Create Workout Page (`/workout`)\n![image](https://github.com/user-attachments/assets/8dcf589c-f730-42ec-9e6d-96097097a569)\n\n#### 4. Workout Details Page (`/workout/{id}/details`)\nGeneral information, exercises and calendar with records.\n![image](https://github.com/user-attachments/assets/b34abf6f-f2e5-4ae2-a9f7-9b936f2e4c3f)\n![image](https://github.com/user-attachments/assets/82dd6a59-2903-4d6f-a453-12c1ef436c32)\n\n### 2. Progress Page (`/progress`)\nShows your total progress in a table, chart and calendar.\n![image](https://github.com/user-attachments/assets/a4d347b4-7a42-4ed8-9e6c-6d1aff9e3e7a)\n\n### 3. Exercise Pages \n\n#### 1. Exercises Page (`/exercises`)\nLists logged exercises.\n- #### All\nYour and internal exercises\n![image](https://github.com/user-attachments/assets/d26ad6d7-eb24-450b-94fd-dc69130db867)\n![image](https://github.com/user-attachments/assets/c01b8834-b066-49e2-91dc-bf61cb26f5d2)\n\n- #### Yours\nYour exercises\n![image](https://github.com/user-attachments/assets/3ee73150-b5ac-40f1-a6ab-f3aea25f76c0)\n\n- #### Internal\nInternal exercises\n![image](https://github.com/user-attachments/assets/fc96e3ff-c203-4d01-8609-32c1794f0430)\n\n#### 2. Edit Exercise Page (`/exercise/{id}`)\n\n![image](https://github.com/user-attachments/assets/ea89d2bd-674e-4a3f-82a3-e7e2d8ddeb32)\n![image](https://github.com/user-attachments/assets/1c809c4a-29ff-4ff7-a1ce-eda8e82d1231)\n\n#### 3. Create Exercise Pages\n\n#### Yours - `/your-exercise`\n#### Internal - `/exercise`\n![image](https://github.com/user-attachments/assets/aa8237c9-20f1-4e2c-81db-7deeb602dcf7)\n![image](https://github.com/user-attachments/assets/17461e53-8812-46df-91ae-ef11982d73d5)\n\n#### 4. Exercise Details Page (`/exercise/{id}/details`)\nGeneral information, workouts, records and calendar with records.\n\n![image](https://github.com/user-attachments/assets/e9765795-dc99-492b-be7a-ec66b69d6691)\n![image](https://github.com/user-attachments/assets/91335beb-e48c-410f-9d99-d8962f1eebcd)\n\n### 4. Equipment Pages \n\n#### 1. Equipments Page (`/equipments`)\nLists logged equipments with edit and create options.\n\n- #### All\nYour and internal equipments\n![image](https://github.com/user-attachments/assets/368312f6-3a3a-4348-8342-22a6e702e95b)\n\n- #### Yours\nYour equipments\n![image](https://github.com/user-attachments/assets/5c5c0ed1-617b-422d-8fa4-d4b4c6b37768)\n\n- #### Internal\nInternal equipments\n![image](https://github.com/user-attachments/assets/b3e8949f-f193-4ce4-8ea0-6762ccad772e)\n\n#### 2. Equipment Details Page (`/equipment/{id}/details`)\nIts muscles and exercises.\n\n![image](https://github.com/user-attachments/assets/36d6f628-94c9-4a90-8c87-1f7c446fe834)\n\n### 5. Muscle Pages\n\n#### 1. Muscles Page (`/muscles`)\nLists logged muscles.\n![image](https://github.com/user-attachments/assets/7fdb8ce7-a0a1-4835-817d-90f72ed697b3)\n\n#### 2. Edit Muscle Page (`/muscle/{id}`)\n![image](https://github.com/user-attachments/assets/11bd5979-09d5-4243-8674-ca7b244424e0)\n\n#### 3. Create Muscle Page (`/muscle`)\n![image](https://github.com/user-attachments/assets/07c9e6c6-a3df-4c43-84c0-42baa1854ccf)\n\n#### 4. Muscle Details Page (`/muscle/{id}/details`)\nIts parent and child muscles, exercises and muscle sizes.\n\n![image](https://github.com/user-attachments/assets/324e0e09-1579-4de8-a0ed-ca55ce8ad65f)\n![image](https://github.com/user-attachments/assets/a08afb9b-b02f-40d0-9f7f-240ff812ac4f)\n\n### 6. Account (`/account`)\nShows your preferable measurements and links to other account related pages.\n![image](https://github.com/user-attachments/assets/178f5b39-8985-4e7e-b8ff-84efa626c3e7)\n\n### 7. Profile (`/profile`)\nChange your name and/or email.\n![image](https://github.com/user-attachments/assets/d9518695-9e01-4029-ae72-a6619d94c4ce)\n\n### 8. Password (`/password`)\nChange your current password.\n![image](https://github.com/user-attachments/assets/a1ca7c53-ef3b-4181-9ee9-660c598e2d50)\n\n### 9. Personal Data (`/personal-data`)\nChange your personal data.\n![image](https://github.com/user-attachments/assets/58b96adf-4583-4e60-a2f0-c9c0d96858e0)\n\n### 10. Muscle Size Pages\n\n#### 1. Muscle Sizes Page (`/muscle-sizes`)\nLists logged muscle sizes with charts.\n![image](https://github.com/user-attachments/assets/d006a80e-13dc-46ad-94ce-559461d2b6a9)\n![image](https://github.com/user-attachments/assets/b483a215-8dd4-48f9-9b2a-f0e8b351c6e3)\n\n#### 2. Edit Muscle Size Page (`/muscle-size/{id}`)\n![image](https://github.com/user-attachments/assets/60a765d5-6da7-403e-9c76-2c7b950318f3)\n\n#### 3. Create Muscle Size Page (`/muscle-size`)\n![image](https://github.com/user-attachments/assets/41d8eb47-e34b-4e60-b268-2d516d14a388)\n\n### 11. Body Weight Pages\n\n#### 1. Body Weights Page (`/body-weights`)\nLists logged body weights with charts.\n![image](https://github.com/user-attachments/assets/6d0f045c-3082-4bec-a364-01860bdf3737)\n![image](https://github.com/user-attachments/assets/34624b23-6175-4cc2-b6f3-52b4ff56b6da)\n\n#### 2. Edit Body Weight Page (`/body-weight/{id}`)\n![image](https://github.com/user-attachments/assets/524606d6-bed6-42dc-9c0b-0c4a956fa6bb)\n\n#### 3. Create Body Weight Page (`/body-weight`)\n![image](https://github.com/user-attachments/assets/22b0b67b-bbbe-4ae4-b75e-34cd041f3ba5)\n\n### 12. Exercise Record Pages\n\n#### 1. Exercise Records Page (`/exercise-records`)\nLists logged exercise records with charts.\n![image](https://github.com/user-attachments/assets/8464b0e8-189c-4683-8128-4cb08a73ae6b)\n![image](https://github.com/user-attachments/assets/1f15c9de-6ce1-425e-8683-20221444cce0)\n\n#### 2. Edit Exercise Record Page (`/exercise-record/{id}`)\n![image](https://github.com/user-attachments/assets/16088c4c-08e2-474d-acea-6d3c0bc39f8b)\n\n### 14. Workout Record Pages\n\n#### 1. Workout Records Page (`/workout-records`)\nLists logged workout records with charts.\n![image](https://github.com/user-attachments/assets/19d22e71-5d09-4f07-87e0-f71a3a2d0135)\n![image](https://github.com/user-attachments/assets/38e8bc0f-8804-402d-bfef-00e02f81a08a)\n\n#### 2. Edit Workout Record Page (`workouts/{workoutId}/workout-record/{id}`)\n![image](https://github.com/user-attachments/assets/33934cfa-27f7-48c4-a065-22e9279a1bd7)\n![image](https://github.com/user-attachments/assets/31ace6a4-d71d-4ba0-8115-4861f58fd79c)\n\n\n#### 3. Create Workout Record Page (`/workout-record` or `workouts/{workoutId}/workout-record`)\n![image](https://github.com/user-attachments/assets/1339773a-0607-496f-8acf-3633275768a7)\n\n#### 4. Workout Record Details Page (`/workouts/{workoutId}/workout-record-details/{id}`)\nGeneral information and records.\n![image](https://github.com/user-attachments/assets/a17c91a8-bae5-4856-bfbd-a27bc4c3f4d4)\n\n\n### 15. User Pages\n\n#### 1. Users Page (`/users`)\nLists logged users with impersonate option.\n![image](https://github.com/user-attachments/assets/5a9dc818-707a-4722-aaa9-d13296de72a3)\n![image](https://github.com/user-attachments/assets/c36b889a-f66f-449a-9b6b-e3c7ebb206b5)\n![image](https://github.com/user-attachments/assets/be3e6e6b-ad08-4e2a-b26f-4d5e83727934)\n\n#### 2. Edit Users Page (`user/{id}`)\n![image](https://github.com/user-attachments/assets/b05258a0-6626-4f2d-82d2-a8fa50f8f5bd)\n\n#### 3. Create Users Page (`/user`)\n![image](https://github.com/user-attachments/assets/cf16144e-7f59-46c5-b939-0e8f9b03462c)\n\n### 16. Role Pages\n\n#### 1. Roles Page (`/users`)\nLists logged roles with edit and add options.\n![image](https://github.com/user-attachments/assets/f1bbc3e4-99e9-4e4a-a7a0-67070e008a41)\n\n#### 2. Role Details Page (`/role/{id}/details`)\nUsers with this role\n![image](https://github.com/user-attachments/assets/8294f419-5318-4154-9d73-5c6f829138bb)\n\n### 17. Login Page (`/login`)\n![image](https://github.com/user-attachments/assets/de028819-3ea9-4ccd-94a9-65462a60801e)\n\n### 18. Register Page (`/register`)\n![image](https://github.com/user-attachments/assets/f74c5844-6dc9-4ff3-af4d-263bf4f51f70)\n![image](https://github.com/user-attachments/assets/b1eab721-d0b4-49cf-b47f-2cbcf6aaf2ae)\n![image](https://github.com/user-attachments/assets/5487cb28-500b-49b1-b14a-050f967b2ebc)\n\n### 19. Logout (`/logout`)\n### 20. Not Found\n![image](https://github.com/user-attachments/assets/5022339f-9fbb-4882-80aa-f5302e127cc3)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkurulko%2Fworkout-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkurulko%2Fworkout-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkurulko%2Fworkout-tracker/lists"}