Personal Tracker
A unified dashboard for movies, series, books, gym workouts, and calendar — one place for everything I track daily.
Problem Statement
My media consumption, fitness logs, reading list, and schedule lived in separate apps — each with its own UI, sync model, and mental overhead.
Switching between five tools to answer simple questions like "what am I watching this week?" or "did I hit the gym?" added friction to daily planning.
I needed a single system I owned: fast to open, consistent to navigate, and extensible as new tracking categories emerge.
My Approaches
Option A: Keep using best-of-breed apps and accept fragmentation. Rejected — no unified view and limited customization.
Option B: Build a modular dashboard with pluggable trackers sharing a common data model and navigation shell. Chosen — balances scope with long-term flexibility.
Option C: One monolithic schema for all activity types. Deferred — higher upfront cost; modular approach lets each domain evolve independently.
How I Built
Defined a core activity model that each tracker module extends — media, fitness, reading, and calendar share list/detail patterns.
Designed a dashboard shell with quick-glance widgets per domain and deep-dive views on demand.
Planned sync strategies per integration: pull-based metadata enrichment for media, manual entry with templates for gym logs.
Used AI-assisted iteration to prototype UI flows and data shapes quickly, then hardened contracts before implementation.
Tech Stack & Choices
| Technology | Role | Why |
|---|---|---|
| React + TypeScript | Frontend | Type-safe component model for a data-dense dashboard with reusable tracker modules. |
| REST API | Backend | Clear resource boundaries per tracker domain with room to add sync workers later. |
| PostgreSQL | Database | Relational model fits structured activity logs with queryable history and aggregations. |
| Local + cloud LLMs | Development accelerator | Rapid prototyping of schemas, copy, and UI variants without blocking on manual boilerplate. |
Screenshots & Results
- Scaffold in place — fill with metrics once live (e.g. daily active modules, sync latency).
- Target: sub-2s load for dashboard home on local network.
- Goal: replace 4+ separate apps with one daily driver.