4.6 KiB

Workout History Features

Last Updated: 2025-03-25
Status: Active
Related To: Workout Features, Nostr Integration

Purpose

This document describes the workout history features in the POWR app, focusing on the MVP implementation. It covers history views, data sources, and sharing capabilities.

Overview

The workout history feature allows users to:

  1. View their past workout completions in chronological order
  2. Review detailed workout data for completed sessions
  3. Share workouts from history to Nostr
  4. Access both local and Nostr-published workout records

The history implementation is designed with the following principles:

  • Unified view of workouts from multiple sources
  • Simple chronological listing
  • Calendar-based frequency view
  • Offline-first with sync capabilities
  • Integration with social sharing

Component Architecture

High-Level Components

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   UI Layer      │     │  Service Layer  │     │   Data Layer    │
│                 │     │                 │     │                 │
│ History List    │     │ History Service │     │ SQLite Storage  │
│ Calendar View   │◄───►│ Sharing Service │◄───►│ Nostr Events    │
│ Detail Views    │     │ Migration       │     │ Caching         │
└─────────────────┘     └─────────────────┘     └─────────────────┘

UI Components

  • WorkoutHistoryList: Primary chronological list of completed workouts
  • CalendarView: Basic calendar visualization of workout frequency
  • WorkoutDetailView: Expanded view of a single workout record
  • WorkoutShareButton: Allows sharing of completed workouts to Nostr

Service Layer

  • UnifiedWorkoutHistoryService: Combined access to multiple history sources
  • EnhancedWorkoutHistoryService: Local workout history management
  • NostrWorkoutHistoryService: Remote workout history via Nostr
  • PublicationQueueService: Queue for publishing workout records to Nostr

Data Layer

  • SQLite: Local storage for workout history
  • EventCache: Cached Nostr events for workout records

Implementation Details

Data Sources

The workout history system supports multiple data sources:

  1. Local SQLite Database

    • Primary storage for all workout records
    • Complete history regardless of connectivity
    • Stores workout details including exercises, sets, weights, etc.
  2. Nostr Events (kind 1301)

    • Published workout records from the user
    • Records from template authors for attribution
    • Enables social sharing and discovery

History Views

Chronological View

  • Lists workouts by date, newest first
  • Displays workout name, date, and basic summary
  • Links to detailed workout view
  • Includes sharing capability to publish to Nostr

Calendar View

  • Basic monthly calendar visualization
  • Shows dates with completed workouts
  • Simple tap to see workouts on a specific date

Workout Details

  • Complete set/rep/weight data
  • Comparison to template (if used)
  • Notes from workout
  • Option to share to Nostr

Sharing to Nostr

The history view includes the ability to share workouts to Nostr:

  1. User selects "Share" on any workout in history
  2. User can add a note/caption
  3. System publishes a kind 1301 workout record event
  4. Optionally publishes a kind 1 note quoting the workout record

This aligns with the MVP sharing functionality in the workout completion flow but extends it to previously completed workouts.

MVP Implementation Focus

For the MVP release, the history tab focuses on:

  1. Basic Workout History Display

    • Chronological list of workouts
    • Simple calendar view
    • Detailed workout view
  2. Workout Sharing

    • Publishing kind 1301 workout records from history
    • Enabling sharing of previously completed workouts
  3. Unified History Sources

    • Showing both local and Nostr-published workouts
    • Basic deduplication of records from multiple sources