mirror of
https://github.com/DocNR/POWR.git
synced 2025-04-19 19:01:18 +00:00

* Add style prop to UserAvatar component for better customization * Refactor UserAvatar to use getAvatarSeed utility for consistent avatar generation * Fix React hook ordering issues in profile/overview.tsx to prevent crashes during auth state changes * Add proper state initialization and cleanup during authentication transitions * Ensure consistent fallback avatar display for unauthenticated users These changes improve stability during login/logout operations and provide better visual continuity with Robohash avatars when profile images aren't available.
148 lines
4.2 KiB
Markdown
148 lines
4.2 KiB
Markdown
# Library Tab
|
|
|
|
**Last Updated:** 2025-04-01
|
|
**Status:** Active
|
|
**Related To:** Exercise Management, Template Management, Content Discovery
|
|
|
|
## Overview
|
|
|
|
The Library tab serves as the centralized hub for managing fitness content in the POWR app, including exercises and workout templates. It provides an organized, searchable interface that supports both locally created content and Nostr-based discovery while maintaining offline usability.
|
|
|
|
## Key Components
|
|
|
|
### Navigation Structure
|
|
|
|
The Library is organized into three main sections using Material Top Tabs:
|
|
|
|
1. **Templates (Default Tab)** - Workout templates for quick start
|
|
2. **Exercises** - Individual exercise library
|
|
3. **Programs** - Multi-day workout programs (placeholder for future)
|
|
|
|
### Templates Management
|
|
|
|

|
|
|
|
The Templates section provides organized access to workout templates from various sources:
|
|
|
|
| Feature | Status | Description |
|
|
|---------|--------|-------------|
|
|
| Basic Template List | ✅ | Organized display of all templates |
|
|
| Favorites Section | ✅ | Quick access to favorite templates |
|
|
| Source Badges | ✅ | Visual indicators for Local/POWR/Nostr sources |
|
|
| Recently Used | 🟡 | Partially implemented history tracking |
|
|
| Usage Statistics | ❌ | Not yet implemented |
|
|
|
|
#### Template Display
|
|
|
|
Each template card shows:
|
|
- Template title
|
|
- Workout type indication
|
|
- Exercise preview (first 3)
|
|
- Source badges
|
|
- Favorite toggle
|
|
|
|
#### Templates Search & Filtering
|
|
|
|
- Real-time search functionality
|
|
- Basic filtering by type/category
|
|
- Advanced filters partially implemented
|
|
|
|
### Exercise Management
|
|
|
|

|
|
|
|
The Exercises section organizes all available exercises:
|
|
|
|
| Feature | Status | Description |
|
|
|---------|--------|-------------|
|
|
| Alphabetical List | ✅ | With quick scroll navigation |
|
|
| Categorization | ✅ | Muscle groups, movement types |
|
|
| Source Badges | ✅ | Visual indicators for content source |
|
|
| Recent Section | ❌ | Not yet implemented |
|
|
| Usage Tracking | ❌ | Not yet implemented |
|
|
|
|
#### Exercise Display
|
|
|
|
Each exercise item shows:
|
|
- Exercise name
|
|
- Category/tags
|
|
- Equipment requirements
|
|
- Source badge
|
|
|
|
#### Exercise Search & Filtering
|
|
|
|
- Real-time search functionality
|
|
- Basic filters for category/equipment
|
|
- Advanced filtering partially implemented
|
|
|
|
## Technical Implementation
|
|
|
|
### Data Architecture
|
|
|
|
The Library uses SQLite for persistent storage with the following key services:
|
|
|
|
- **LibraryService**: Core data management
|
|
- **ExerciseService**: Exercise CRUD operations
|
|
- **TemplateService**: Template management
|
|
- **FavoritesService**: Favorites functionality
|
|
|
|
### Content Management
|
|
|
|
| Feature | Status | Notes |
|
|
|---------|--------|-------|
|
|
| Exercise Creation | ✅ | Full CRUD support |
|
|
| Template Creation | ✅ | Full CRUD support |
|
|
| Content Validation | ✅ | Basic validation implemented |
|
|
| Tag Management | 🟡 | Partial implementation |
|
|
| Media Support | ❌ | Planned for future |
|
|
|
|
### Performance Metrics
|
|
|
|
The Library meets key performance requirements:
|
|
- Search response: < 100ms
|
|
- Scroll performance: 60fps
|
|
- Database operations: < 50ms
|
|
|
|
## Offline-First Implementation
|
|
|
|
The Library is designed with offline-first principles:
|
|
|
|
- Local storage for all core content
|
|
- Offline content creation
|
|
- Pending sync status indicators
|
|
- Background synchronization when online
|
|
|
|
## Nostr Integration
|
|
|
|

|
|
|
|
While the types and schemas have been defined, the Nostr integration is still in progress:
|
|
|
|
- Content discovery from relays
|
|
- Publishing templates to Nostr
|
|
- Social interactions (likes, shares)
|
|
- Attribution and source tracking
|
|
|
|
## Development Roadmap
|
|
|
|
### Phase 1: Core Enhancements (Current)
|
|
- Usage statistics and history tracking
|
|
- Enhanced details views
|
|
- Improved filtering system
|
|
|
|
### Phase 2: Advanced Features
|
|
- Media support
|
|
- Performance metrics
|
|
- Enhanced filtering
|
|
|
|
### Phase 3: Nostr Integration
|
|
- Event handling
|
|
- Content synchronization
|
|
- Offline capabilities
|
|
|
|
## Related Components
|
|
|
|
- [Workout Creation Flow](../workout/workout_overview.md)
|
|
- [POWR Packs](../powr_packs/overview.md)
|
|
- [Caching System](../../technical/caching/cache_management.md)
|