Skip to content

Finnick223/WorkoutTracker

Repository files navigation

Workout Tracker

This repository contains my front-end react project, developed in collaboration with a friend who built the back-end API. The app helps users track their workout routines and body measurements progress.

Technologies used in this project:

Typescript Vite JWT React React Query React router React Hook Form Material UI Framer Motion Vitest Testing-library Cypress Github Actions Docker

What is this project about?

This project provides simple and intuitive platform, where users can record and review their training results, they also can track their body measurements over time and visualize progress using charts or check history with infinite loading. Home page dashboard offers all essential informations with easy navigation to different app sections.

Checkout screenshots from the application on features overview section.

Setting up project and commands

Clone this repository:

git  clone  https://github.com/Finnick223/WorkoutTracker

Go to the project and install:

npm  install

Running app as dev:

npm  run  dev

Running prettier:

npm  run  format

Running eslint:

npm  run  lint

Running husky:

npm  run  prepare

Running unit tests:

npm  run  test

Running e2e tests:

npm  run  cy:open

Design

Design of this app is based on MaterialUI components, but is created by myself without any UI tools like Figma. So it where built on the fly aiming to provide a clean, simple user interface and ensuring responsiveness across devices.

I also created dark theme, which can be found at settings in profile page.

It isn't fancy but I were focused on funcionality part.

Features overview

There is a list of features that I've already implemented.

Technologies

  • React Query for efficient data fetching and caching
  • React Hook Form for form handling
  • ESLint, Prettier, Husky, Lint-Staged for code readability
  • Material UI for a clean components and responsiveness
  • Framer-motion for providing simple animations
  • Vitest, Testing-Library and Cypress to provide unit, integration and e2e tests
  • Github Actions to implement CI feature

Auth

  • Users authentication with JWT token
  • validation on login and register (disable button and show helper text)
  • resetting password

sign up screen

sign in screen

reset password

Dashboard

  • Showing welcome text and quick navigation to other parts
  • Showing last measurement
  • Showing weight progress chart
  • Showing exercise stats chart
  • Showing date of last training and link to navigate

Dashboard

Training section

Training panel

  • User can manage workout cards, add, edit and delete
  • Pagination dynamically adjusts based on available data, preventing navigation to empty pages

Training panel

Exercise panel

  • User can manage exercise grid (add,edit,delete)
  • User have predefined exercises name list
  • User can't add negative number
  • User can set number of sets

Exercise panel

User section

New Measurements

  • User can add common body measurements
  • User can see animated body based on currenty hovered measurement

New measurement page

Measurements History

  • Users can track how their measurements changed in time
  • History is based on infinite loading button

Measurement history

Measurements Charts

  • Users can view their measurements in a dynamic line chart

Measurement charts

Profile section

Account

  • Users can see and edit personal informations

Settings

  • Users can set Dark Mode option

Profile panel Dark mode profile panel

Footer

Footer

TODO

  • Add avatar funcionality
  • Create new welcome page

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages