0%
Loading...
Back to project list

Kinroku

Released
Kinroku

Status

Released

External Link

View App

Views

0 views

Overview

A workout tracking app that visualizes training intensity with color on a calendar. A PWA built with React, Next.js, and Supabase.

Details

💡 Background & Motivation

Keeping a record is essential for sticking with strength training, but most existing apps focus mainly on numbers and graphs. After researching eight major Japanese fitness apps (FiNC, Kintore Memo, Strong, and others), I found that even apps with a calendar view typically just mark workout days in a single color — no app visualized training intensity in gradual steps.

I built Kinroku around a simple visual idea — darker colors for harder days, lighter colors for easier ones — to make effort visible and turn that visibility into motivation to keep going.

⚡ Key Features

Calendar × Intensity Visualization (Core Feature)

  • Shows subjective intensity (1–5 scale) as color on the calendar

  • Automatically generates the in-between colors (levels 2–4) once you set colors for level 1 and level 5

  • See your monthly effort at a glance

Training Log

  • Log by body part, exercise, weight, reps, and sets

  • Track left/right sets separately (supports one-handed exercises like dumbbell curls)

  • Notes field for recording form cues and other observations

Customization

  • Freely add, edit, and delete exercises and body parts

  • Register favorite exercises for faster logging

  • Toggle left/right tracking on or off

PWA Support

  • Add to your home screen for a native-app-like experience

  • Log data even while offline (syncs automatically once you're back online)

  • Start using it instantly from the browser — no app store required

🛠 Tech Stack

Category Technology
Frontend React 18 / Next.js 14 (App Router) / TypeScript
Styling Tailwind CSS
State management Zustand
Backend Supabase (PostgreSQL / Auth / Row Level Security)
Hosting Vercel
PWA next-pwa / Service Worker

🔧 Technical Highlights & Design Decisions

Automatic Color Gradient Generation

Implemented a feature that generates a 5-step gradient from just two user-specified colors. Interpolation is calculated in HSL color space to produce a natural-looking gradient.

Data Design for Left/Right Tracking

Left/right tracking is managed per exercise via a flag, with a side column ('left' | 'right' | null) added to the sets table. This design keeps the impact on existing logging features to a minimum while leaving room for flexible extension.

Offline-First Design

Anticipating poor signal at the gym, the app keeps a local cache in IndexedDB and syncs with Supabase once back online, reducing the risk of data loss.

Leveraging Row Level Security (RLS)

Supabase's RLS ensures each user can only access their own data, so the design prevents data leaks even if a frontend bug were to occur.

Responsive Design

Designed mobile-first, with the calendar UI optimized for tap interaction. Runs from the same codebase on desktop as well.

📊 What Sets It Apart

Aspect Existing Apps Kinroku
Calendar display Marks workout days in a single color Represents intensity with a 5-step color scale
Color customization Fixed or limited Auto-gradient from 2 chosen colors
Left/right tracking Not supported Supported (toggle per exercise)
PWA support Almost none Full support (works offline)

🚀 Future Plans

  • Graph view for training volume (total load)

  • 1RM progression graphs by exercise

  • Social sharing (share your calendar as an image)

  • Data export (CSV format)