← Calvin Skalla
Life Dashboard
A self-built health and habit tracker
Personal project Next.js Design system built alongside the app
Life Dashboard — Today screen showing recovery vitals, workouts, nutrition, and supplements

The problem

My recovery data lived in one app, workouts in another, supplements in a note, and macros nowhere consistent. None of it was in one place at the time I actually needed it — first thing in the morning, deciding how hard to train that day. I built Life Dashboard as a single daily view instead.

What it does

The app opens on Today: last night's recovery score, HRV, resting heart rate, skin temperature and respiratory rate; the day's workouts with completion state; nutrition against goal macros; and a supplements checklist split morning/night. Four more tabs — Progress, Hobbies, Notes, Targets — carry the rest of the daily routine.

Building it

I built the app and its design system together rather than styling screens ad hoc — the same tokens and components (surfaces, fields, segmented controls, skeleton loaders) are reused across all five tabs, extracted directly from the running app's stylesheet so the reference can't drift from what actually ships.

Outcome

I use it every morning to decide how to train that day and whether recovery numbers say to back off. It has replaced three separate apps and a running note.