README.md

July 29, 2026 ยท View on GitHub

Trainable Logo

Trainable

Logo by br1_production

Platform Language UI Design Latest Release Stars Support Website


Download APK

Trainable is a premium, native Android workout tracker designed for lifters. It features a monolithic design aligned with Google's Material 3 Expressive guidelines, with both Dark and Light Mode support, offering a seamless experience optimized for Pixel devices.

Available in 6 languages: English, Italian, Portuguese, German, French, Spanish.


๐Ÿ“ฑ Screenshots

Dashboard Routines Routine Detail Workout Execution Session History Analytics

โœจ Features

๐Ÿ“Š Intelligent Dashboard

  • Active Plan Hub: Quick access to your current routine and next scheduled session.
  • Smart Recommendations: Assign routines to specific weekdays for intelligent "Today's Workout" suggestions.
  • Resume Workout: Smart hub to quickly resume interrupted sessions without data loss.
  • Unfinished Session Detection: Smart alerts when starting a workout for a plan that already has an in-progress session, with one-tap resume.
  • Quick Start: Start an empty workout directly from the dashboard without a plan.

๐Ÿ“‹ Advanced Routine Builder

  • Exercise Library: 130+ pre-populated exercises with categorized filters.
  • Drag & Drop Reordering: Fluid, haptic-powered reordering of exercises within routines.
  • Custom Exercises: Add and manage your own exercises with persistent categorization.
  • Custom Categories: Create, rename, and delete your own exercise categories.
  • Editable Preset Exercises: Toggle editing of built-in exercise names and categories.
  • Superset Support: Group exercises into supersets within routines.
  • Auto-Adjust Sets: Enter rep schemes like 10-8-6 and sets auto-update to match the number of segments.
  • Plan Scheduling: Set Start and Expire dates when creating or editing routines.
  • Routine Sharing: Export and import routines via .trainableplan file format.
  • Routine Photos: Capture multiple photos in-app and include them in exports.

๐Ÿ’ช High-Performance Workout Execution

  • Expressive UI: Massive, touch-friendly inputs designed for use during heavy sets.
  • Wheel Pickers: Haptic-boosted weight and rep selection for precise control.
  • Smart Hub: Dynamic navigation between exercises with "Finish" and "Next" logic.
  • Superset Flow: Execute grouped superset exercises seamlessly.
  • Cardio Exercise Support: Log cardio sessions (Run, Bike, Walk, or custom) with distance and duration tracking, including cardio timer state persistence.
  • Rest Timer: Integrated countdown cards with enhanced notifications showing next-set details and planned reps.
  • Custom Vibration: Configurable continuous vibration duration (0โ€“30s) when the rest timer finishes while the device is locked.
  • Warmup Timer: Configurable warmup timer in settings.
  • Session Notes: Persistence of notes for every single set for granular tracking.
  • Swipe Navigation: Swipe between exercises during workout execution.
  • Exercise Note Pre-fill: Auto-fill exercise notes from session history.
  • On-the-fly Edits: Add custom exercises mid-workout; tap plan title to view/edit plan details.
  • Inline Exercise Modifications: Add or remove exercises mid-workout with inline controls.
  • Workout Timer: Configurable workout duration timer with enable/disable toggle in Settings.

๐Ÿ“ˆ Deep Analytics

  • Vico Charts: Professional-grade visualizations for total volume and strength trends.
  • 1RM Tracking: Algorithmic strength assessment using the Epley formula, with optional 1RM cards.
  • Volume by Muscle Group: Track volume distributed across muscle groups.
  • Session Comparison: Compare workouts across time periods or specific sessions.
  • Workout Calendar: Visual calendar widget for workout frequency.
  • Consistency Tracking: Visual heatmaps and progress cards.
  • Strength Index: Algorithmic assessment of your structural balance and performance.
  • Body Weight: Integrated weight logging and history tracking.
  • Body Weight History: Dedicated module with date picker, delete functionality, collapsible UI, and configurable time range (1w/1m/6m/All).
  • Cardio Tracking: Cardio counter in weekly goal overview.
  • Plans Reports: Generate detailed HTML reports for workout plans with per-exercise history, max weight/volume, estimated 1RM, and swap tracking. Preview, save, or share reports.

๐ŸŒ Localization

  • 6 Languages: English, Italian, Portuguese, German, French, Spanish.
  • Dynamic Switching: Change language directly from Settings.

๐ŸŸ๏ธ Gym Membership

  • Expiration Tracking: Monitor your gym subscription end date.
  • Smart Alerts: Expiration notifications with "Renew" quick action buttons.

๐ŸŒ Local WebServer

  • On-Device Dashboard: Start a local HTTP server from Settings to view your training data (analytics, plans, session history) in any browser on the same Wi-Fi network.
  • REST API: Built-in Ktor-powered API serving real-time data from the local Room database.
  • Foreground Service: Persistent notification with server status, URL display, and one-tap stop.
  • Responsive Web UI: Full-featured web pages with dark/light theme, i18n, and mobile-friendly layout.

๐Ÿ“ธ Social Sharing

  • Workout Share Cards: Generate and share full-length workout summary images.
  • Live Preview: Preview your share card before sharing.
  • Muscle Group Details: Muscle group breakdown included in share cards.
  • Session Notes: Workout notes included in shared summaries.
  • Planned Set/Rep Scheme: Planned set and rep structure included in share cards.

๐Ÿ“ฑ Widgets

  • Quick Start/Resume Widget: Home Screen and Lock Screen widget for instant workout start or resume.
  • Weekly Goal Widget: Track weekly workout goal progress directly from your home screen.

๐Ÿ”’ Physical Checks

  • Hidden Entry Point: Tap the Trainable logo 3 times from the Dashboard to access Physical Checks.
  • Body Progression Tracking: Log body measurements with weight, notes, and timestamp.
  • Photo Gallery: Capture or import multiple photos per check with fullscreen pinch-to-zoom viewer.
  • Before/After Comparison: Interactive slider overlay to compare any two check entries.
  • Biometric Lock: Fingerprint or device PIN gate for quick access.
  • Password Encryption: Optional AES-256-GCM password-based encryption for all check photos.
  • Forgot Password Reset: Secure nuclear reset that deletes all check data if password is lost.
  • Auto-Lock: Session auto-locks after inactivity or when app goes to background.
  • Unit Conversion: Automatic kg/lb conversion for weight entries.
  • Swipe & Long-Press Actions: Quick edit, delete, and manage checks via gestures.
  • Photo Editor: Built-in crop, rotate, zoom, and pan tools with aspect ratio presets (Free, 1:1, 4:3, 16:9) before saving photos.

โš™๏ธ Premium UX & Tools

  • Dynamic Color: Full support for Android 12+ wallpaper-based color extraction.
  • Light Mode & Custom Themes: Switch between Dark/Light mode, customize themes, and choose from an extensive color palette in Settings.
  • Google Sans Font: Clean, modern typography throughout the app.
  • Horizontal Pager Navigation: Fluid swipe-based transitions between main tabs.
  • Backup & Restore: Secure ZIP-based local backup system with photo compression and expanded preference sync (Theme, Units, Language).
  • Auto-Backup: Reliable WorkManager-based automated background backups with configurable frequency, max count, and image inclusion.
  • Tactile Feedback: Enhanced haptic responses for all critical UI interactions.
  • Interaction Choice: Configure Swipe or Long-press interaction style in Settings.
  • Auto-Updates: Built-in automatic update support for future releases.
  • Unit System: Choose between Metric (kg) and Imperial (lbs).

๐Ÿ—๏ธ Technical Architecture

Trainable follows Clean Architecture principles combined with MVVM for a robust and testable codebase:

  • UI Layer: 100% Jetpack Compose using the Monolithic Design System (no XML).
  • Presentation Layer: Hilt-injected ViewModels managing StateFlow for reactive UI updates.
  • Data Layer:
    • Room Database: Single Source of Truth (SSoT).
    • DataStore: For lightweight user preferences (Haptic settings, theme).
    • WorkManager: Automated background backups.
  • Navigation: Type-safe navigation with @Serializable routes.

๐Ÿ“ Project Structure

com/emanuel5014/trainable/
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ ExerciseTranslations.kt
โ”‚   โ”œโ”€โ”€ local/
โ”‚   โ”‚   โ”œโ”€โ”€ ExerciseData.kt
โ”‚   โ”‚   โ”œโ”€โ”€ GymDatabase.kt
โ”‚   โ”‚   โ”œโ”€โ”€ dao/            # Room DAOs (WorkoutDao, ExerciseDao, AnalyticsDao, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ entity/         # Room entities (SetLogEntity, CardioLogEntity, CustomCategoryEntity, etc.)
โ”‚   โ”‚   โ””โ”€โ”€ relation/       # Relation classes (PlanWithDetails, SessionWithSets, etc.)
โ”‚   โ”œโ”€โ”€ remote/
โ”‚   โ”‚   โ”œโ”€โ”€ GitHubModels.kt
โ”‚   โ”‚   โ””โ”€โ”€ dto/            # DTOs for export/import (WorkoutPlanExportDto)
โ”‚   โ”œโ”€โ”€ report/             # HTML plan reports (ReportGenerator, HtmlReportFormatter, ReportModels)
โ”‚   โ””โ”€โ”€ repository/         # Repositories (WorkoutRepository, AnalyticsRepository, ExerciseRepository, etc.)
โ”œโ”€โ”€ di/                     # Hilt modules (DatabaseModule, NetworkModule)
โ”œโ”€โ”€ ui/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ analytics/      # Charts, stat cards, consistency, body comp, personal bests
โ”‚   โ”‚   โ”œโ”€โ”€ base/           # Design system primitives (GymCard, GymButton, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ dialogs/        # Reusable dialogs (UpdateDialog, ImportConfirmation)
โ”‚   โ”‚   โ”œโ”€โ”€ exercise/       # Exercise cards, cardio input, picker, rest timer, set log input
โ”‚   โ”‚   โ”œโ”€โ”€ navbar/         # Bottom navigation bar and items (standard + floating)
โ”‚   โ”‚   โ””โ”€โ”€ shared/         # Shared utilities (EmptyState, ImageEditor, ScreenHeader, etc.)
โ”‚   โ”œโ”€โ”€ navigation/         # NavGraph, Routes
โ”‚   โ”œโ”€โ”€ screens/
โ”‚   โ”‚   โ”œโ”€โ”€ analytics/      # Analytics dashboard, drag-drop state, models
โ”‚   โ”‚   โ”œโ”€โ”€ compare/        # Session comparison
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard/      # Main dashboard
โ”‚   โ”‚   โ”œโ”€โ”€ history/        # Session history, edit, filter bottom sheet
โ”‚   โ”‚   โ”œโ”€โ”€ onboarding/     # Onboarding flow
โ”‚   โ”‚   โ”œโ”€โ”€ physicalcheck/  # Physical checks (body progression, before/after slider, settings)
โ”‚   โ”‚   โ”œโ”€โ”€ routines/       # Routine list, detail, builder, report
โ”‚   โ”‚   โ”œโ”€โ”€ settings/       # App settings, workout settings, exercise customization
โ”‚   โ”‚   โ””โ”€โ”€ workout/        # Workout execution
โ”‚   โ”œโ”€โ”€ theme/              # Color, Shape, Type, Spacing, Theme, ResponsiveSize, ThemeColorStore
โ”‚   โ””โ”€โ”€ util/               # DateFormatter
โ”œโ”€โ”€ util/
โ”‚   โ”œโ”€โ”€ AppLocaleManager.kt
โ”‚   โ”œโ”€โ”€ BiometricHelper.kt
โ”‚   โ”œโ”€โ”€ ImageStorageUtils.kt
โ”‚   โ”œโ”€โ”€ PhysicalCheckCryptoManager.kt
โ”‚   โ”œโ”€โ”€ ShareUtils.kt
โ”‚   โ”œโ”€โ”€ UpdateManager.kt
โ”‚   โ”œโ”€โ”€ UriMigrationHelper.kt
โ”‚   โ”œโ”€โ”€ WeightUnitConverter.kt
โ”‚   โ”œโ”€โ”€ backup/             # AutoBackupWorker, BackupManager
โ”‚   โ””โ”€โ”€ notification/       # TimerNotification, GymMembershipWorker
โ”œโ”€โ”€ webserver/              # Local HTTP server (Ktor), foreground service, server manager
โ”œโ”€โ”€ widget/                 # Glance widgets (TrainableWidget, WeeklyGoalWidget)
โ”œโ”€โ”€ MainActivity.kt
โ””โ”€โ”€ GymTrackingApp.kt

๐Ÿš€ Getting Started

Prerequisites

  • Android Studio Ladybug or newer.
  • Android SDK 28 or higher.
  • A device/emulator running Android 12+ (for Dynamic Color support).

Setup

  1. Clone the repository:
    git clone https://github.com/Emanuel5014/Trainable.git
    
  2. Open the project in Android Studio.
  3. Build and Run on your device.

๐Ÿ› ๏ธ Tech Stack

  • Language: Kotlin (2.3.x)
  • UI: Jetpack Compose (2026.x) with Material3 (1.5.x)
  • Dependency Injection: Dagger Hilt (2.59.x)
  • Database: Room (2.8.x) with KSP
  • Charts: Vico (2.1.x)
  • Serialization: Kotlinx Serialization (1.11.x)
  • Navigation: Navigation Compose (2.9.x)
  • Concurrency: Kotlin Coroutines & Flow
  • Preferences: DataStore Preferences (1.2.x)
  • Background Tasks: WorkManager (2.11.x)
  • Image Loading: Coil (2.7.x)
  • Web Server: Ktor (3.x)
  • Build: Gradle (9.4.x) + AGP (9.2.x)

โค๏ธ Support the project

If you find this project useful, please consider giving it a โญ on GitHub or supporting development via Ko-fi!

Buy Me a Coffee

Developed with โค๏ธ by Emanuel5014.