DEV Community

leoto
leoto

Posted on

Workout app to visualize max weights for free with Next.js + Typescript + Cursor

Introduction

I'd like to share about a workout app I developed for personal use that can visualize max weights.

Application

This is a web application with PWA feature.

Image description

https://maxweightlog.vercel.app/

You can create a shortcut of this application in our device

https://web.dev/learn/pwa/installation

Background: Why I Built This App

As I works out regularly, I feel two main challenges below:

1. Existing Workout Apps Were Difficult to Use

  • Frequent ads interrupting workout recording
  • Too many unnecessary features making apps cumbersome
  • Recording process not optimized, making it tedious to log workouts

2. Couldn't Track Personal Max Weights

  • I want to consider my workout menu based on previous max weights
  • But couldn't find an existing app with this feature

Tech Stack

As a personal project, I chose a following tech stack that would be free to run.

(Cursor is an exception since it is used regardless of this project)

Category Technology Description
Language TypeScript Statically typed JavaScript extension
Framework Next.js 13 (App Router) React-based full-stack framework
Styling Tailwind CSS Utility-first CSS framework
Database Supabase PostgreSQL-based BaaS. Using free tier.
Authentication Clerk Auth platform. Using free tier.
UI Library shadcn/ui Reusable UI components
Infrastructure Vercel Hosting service. Using free tier.
Editor Cursor AI code editor. Using paid plan.

Features

Category Feature Description
Workout Records CRUD Create, read, update, delete workout records
Workout Records Search Search records by body part and exercise type
Workout Records Copy Create new records by copying existing ones
Workout Analysis Max Weight Check View historical max weights by body part and exercise
Settings Body Part CRUD Manage body part data
Settings Exercise CRUD Manage exercise type data

Application Characteristics

1. Simple Workout Recording

It is designed for easy recording during a workout by keeping it simple.
Specific application characteristics include:

List Page

  • Search functionality for existing records
    • Used for the "Copy Existing Record" feature below
  • "Copy Existing Record" feature
    • Minimizes input effort

Create/Update Page

  • Default of Date/time is set to current date because I want to record today's workout record.
  • Default of reps is set to 10 because I always aim at 10 for each exercise
  • Be able to input set for easy input for same exercise/rep combinations

2. Max Weight Visualization

Progress is visualized clearly to track improvements:

  • Graph display of historical max weights by exercise
  • Graph display of records by date

Heroku

Amplify your impact where it matters most — building exceptional apps.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series

👋 Kindness is contagious

If you found this article helpful, please give a ❤️ or share a friendly comment!

Got it