Skip to content

Latest commit

Β 

History

261 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FitNotes Research & Reverse Engineering

This repository contains comprehensive research and analysis of the FitNotes Android workout tracking app, with the goal of creating a compatible cross-platform alternative using Expo/React Native.

Current Status: v1.2.0 πŸš€ - FitNotes parity complete + AI Insights + Social Sharing, see Project Status

🌟 What's New in v1.2.0

  • πŸ€– AI Workout Insights (v1.1.0): On-device analysis with rest day recommendations, volume overload warnings, plateau detection, and workout duration insights
  • πŸ“€ Social Sharing (v1.2.0): Share beautiful workout summary cards as images to any platform
  • 100% Offline: All features work without internet - privacy-first, no cloud required

οΏ½ Quick Start

Development

cd workout-tracker
npm install
npm start              # Start Expo dev server
npm run android        # Run on Android
npm run ios            # Run on iOS

Version Management

npm run version:bump:patch     # 1.2.0 β†’ 1.2.1 (bug fixes)
npm run version:bump:minor     # 1.2.0 β†’ 1.3.0 (new features)
npm run version:bump:major     # 1.2.0 β†’ 2.0.0 (breaking changes)

Building

npm run build:android:preview  # APK for testing
npm run build:ios:preview      # IPA for testing
npm run build:production       # AAB + IPA for app stores

Full details: BUILD_AND_RELEASE.md

οΏ½πŸ“ Repository Structure

fitnotes-research/
β”œβ”€β”€ workout-tracker/               # Expo/React Native app (main implementation)
β”‚   β”œβ”€β”€ app/                       # Expo Router screens
β”‚   β”œβ”€β”€ src/                       # Core logic, services, components
β”‚   β”œβ”€β”€ assets/                    # Images, fonts, icons
β”‚   └── ...
β”œβ”€β”€ docs/                          # Organized documentation
β”‚   β”œβ”€β”€ research/                  # FitNotes reverse engineering docs
β”‚   β”‚   β”œβ”€β”€ FITNOTES_EXPORT_FORMAT.md
β”‚   β”‚   β”œβ”€β”€ FITNOTES_UI_FEATURES.md
β”‚   β”‚   β”œβ”€β”€ IMPLEMENTATION_GUIDE.md
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ development/               # Current project status
β”‚   β”‚   └── PROJECT_STATUS.md
β”‚   β”œβ”€β”€ bugs/                      # Bug tracking and resolution
β”‚   β”‚   β”œβ”€β”€ BUG_STATUS.md
β”‚   β”‚   β”œβ”€β”€ BUGS_FOUND.md
β”‚   β”‚   └── BUGS_ANALYSIS_FEATURE.md
β”‚   └── archive/                   # Historical session notes
β”‚       β”œβ”€β”€ AUTOPILOT_SESSION_COMPLETE.md
β”‚       β”œβ”€β”€ IMPLEMENTATION_SESSION_SUMMARY.md
β”‚       β”œβ”€β”€ IMPLEMENTATION_GAP_ANALYSIS.md
β”‚       └── ROADMAP_AND_MONETIZATION.md
β”œβ”€β”€ apk/                           # Original FitNotes APK
β”œβ”€β”€ extracted/                     # Unzipped APK contents
β”œβ”€β”€ decompiled/                    # Decompiled Java source code
β”‚   β”œβ”€β”€ sources/                   # Readable Java source
β”‚   └── resources/                 # Decompiled resources
└── README.md                      # This file

πŸ“‹ Quick Links

πŸ“‹ Documentation

Comprehensive documentation of:

  • CSV Export Format - Exact structure of workout and measurement exports
  • Database Schema - SQLite tables and relationships
  • Data Models - TypeScript interfaces for all entities
  • Export Logic - How FitNotes generates CSV files
  • Import Requirements - What's needed to import FitNotes data
  • Code Examples - TypeScript functions for export/import

Key Findings:

  • Workout CSV: Date,Exercise,Category,Weight,Weight Unit,Reps,Distance,Distance Unit,Time,Comment
  • Measurement CSV: Date,Time,Measurement,Value,Unit,Comment
  • Weights stored internally as metric (kg)
  • Multiple exercise types (weight+reps, cardio, timed, etc.)
  • Support for comments, personal records, workout groups

Detailed analysis of:

  • Main Features - Workout logging, exercise management, calendar, graphs, etc.
  • UI Patterns - Material Design components and layouts
  • Navigation Structure - Screen hierarchy and user flows
  • Data Visualization - Graphs, charts, calendar views
  • Settings & Customization - Units, themes, rest timers, etc.
  • Feature Prioritization - What to implement first

Core Features Identified:

  • βœ… Workout logging with 6 exercise types
  • βœ… Exercise & category management
  • βœ… CSV export/import
  • βœ… Progress graphs
  • βœ… Calendar view
  • βœ… Personal records tracking
  • βœ… Body measurements
  • βœ… Routines & templates
  • βœ… Goals & workout groups
  • βœ… Plate calculator & 1RM estimation

Step-by-step guide for building a compatible Expo app:

  • Project Setup - Dependencies and folder structure
  • Database Setup - SQLite schema matching FitNotes
  • CSV Export Function - Complete TypeScript implementation
  • CSV Import Function - Parse and import FitNotes CSV
  • UI Components - Example screens (Home, Settings, etc.)
  • Testing Workflow - How to verify compatibility
  • Deployment - Build and publish to app stores

Tech Stack Recommended:

  • Framework: Expo (React Native)
  • Database: expo-sqlite
  • Navigation: React Navigation
  • UI: React Native Paper
  • State: Zustand
  • Charts: Victory Native

πŸ”§ How This Was Done

Tools Used

  1. jadx - DEX to Java decompiler

    • Decompiled APK to readable Java source
    • Preserved structure and comments
    • Generated both sources and resources
  2. unzip - APK extraction

    • APK is just a ZIP archive
    • Extracted raw resources and manifests
  3. grep/find - Code analysis

    • Searched for export/import logic
    • Found database schemas
    • Identified key classes

Process

  1. βœ… Extract APK - Unzipped APK to access raw files
  2. βœ… Decompile - Used jadx to convert DEX to Java
  3. βœ… Analyze Export - Found ExportManager, WorkoutExportDataLoader, CsvWriter
  4. βœ… Map Database - Discovered table schemas and relationships
  5. βœ… Document Format - Reverse-engineered exact CSV structure
  6. βœ… Research UI - Analyzed activities, fragments, layouts
  7. βœ… Identify Features - Catalogued all app features
  8. βœ… Create Guide - Wrote implementation roadmap

🎯 Key Insights

CSV Format (Critical for Compatibility)

Date,Exercise,Category,Weight,Weight Unit,Reps,Distance,Distance Unit,Time,Comment
2024-03-20,Bench Press,Chest,100,kg,10,,,,,
2024-03-20,Running,Cardio,,,,,5.0,km,00:25:30,

Rules:

  • Date format: YYYY-MM-DD
  • Empty fields: empty string, not null
  • Comments: optional 10th column
  • Units: kg/lbs/st, km/mi/m
  • Time: HH:MM:SS or MM:SS

Database Schema (Simplified)

category β†’ exercise β†’ training_log
                   ↓
                comment

Exercise Types

  1. Weight + Reps - Bench Press, Squats
  2. Bodyweight + Reps - Pull-ups, Push-ups
  3. Cardio - Running, Cycling (Distance + Time)
  4. Timed - Plank (Time only)
  5. Weight Only - Deadlift 1RM
  6. Reps Only - Jumping jacks

πŸš€ Getting Started with Your App

Quick Start

# Create new Expo project
npx create-expo-app my-workout-app --template expo-template-blank-typescript

cd my-workout-app

# Install dependencies
npx expo install expo-sqlite expo-file-system expo-sharing \
  react-native-paper @react-navigation/native

# Copy implementation code from IMPLEMENTATION_GUIDE.md

# Start development
npx expo start

Implementation Phases

  1. Phase 1 (Week 1-2): Database + CSV Import/Export
  2. Phase 2 (Week 3-4): Core UI (Home, Workout Log, Exercise List)
  3. Phase 3 (Week 5): Settings, Export/Import UI
  4. Phase 4 (Week 6+): Graphs, Calendar, Advanced Features

Testing Compatibility

  1. Export data from FitNotes
  2. Import into your app
  3. Verify data accuracy
  4. Export from your app
  5. Re-import into FitNotes βœ…

πŸ“Š Feature Comparison

Feature FitNotes Your MVP Priority
Workout Logging βœ… βœ… πŸ”΄ Critical
CSV Export βœ… βœ… πŸ”΄ Critical
CSV Import βœ… βœ… πŸ”΄ Critical
Exercise Management βœ… βœ… πŸ”΄ Critical
Categories βœ… βœ… πŸ”΄ Critical
Basic Graphs βœ… ⚠️ 🟠 High
Calendar View βœ… ⚠️ 🟠 High
Personal Records βœ… ⚠️ 🟑 Medium
Body Measurements βœ… ⚠️ 🟑 Medium
Routines βœ… ⚠️ 🟑 Medium
Goals βœ… ❌ 🟒 Low
Plate Calculator βœ… ❌ 🟒 Low

Legend:

  • βœ… Fully implemented
  • ⚠️ Partially implemented or planned
  • ❌ Not implemented

πŸ’‘ Why This Matters

FitNotes Limitations

  • ❌ Android only (no iOS)
  • ❌ No web version
  • ❌ No cloud sync
  • ❌ Limited API/integration
  • ❌ Closed source
  • ❌ No active development (last update 2023)

Your App Advantages

  • βœ… Cross-platform (iOS, Android, Web)
  • βœ… Cloud sync (optional)
  • βœ… Modern UI/UX
  • βœ… Active development
  • βœ… Open source (if you choose)
  • βœ… 100% FitNotes data compatible

πŸ“ Important Notes

Legal & Ethical

  • This is reverse engineering for interoperability
  • Not copying FitNotes app
  • Creating a compatible alternative
  • FitNotes exports are user's data
  • CSV format is not copyrightable

Package Info

  • Package: com.github.jamesgay.fitnotes
  • Version: 25.1 (analyzed)
  • Source: APKPure

File Locations (in decompiled code)

  • Export Manager: X0/j.java (ExportManager.kt)
  • Workout Export: Z0/c.java (WorkoutExportDataLoader.kt)
  • Measurement Export: Z0/b.java (MeasurementExportDataLoader.kt)
  • CSV Writer: Y0/b.java (CsvWriter.kt)
  • Training Log DB: X/J0.java
  • Models: com/github/jamesgay/fitnotes/model/

πŸŽ“ Learning from FitNotes

What FitNotes Does Well

  • ✨ Simple, intuitive UI
  • ✨ Fast workout entry
  • ✨ Comprehensive tracking (6 exercise types)
  • ✨ Excellent data export (CSV)
  • ✨ Offline-first (no internet required)
  • ✨ Respectful of user data

What Could Be Improved

  • πŸ“± iOS version
  • ☁️ Optional cloud backup
  • 🎨 Modern Material Design 3
  • πŸ”„ Automatic sync
  • 🌐 Web version
  • 🀝 Social features (optional)
  • πŸ“Š More visualizations

πŸ› οΈ Development Roadmap

Milestone 1: Data Compatibility βœ…

  • Understand FitNotes CSV format
  • Create database schema
  • Implement CSV export
  • Implement CSV import
  • Test with real FitNotes data

Milestone 2: Core Features

  • Home screen with recent workouts
  • Workout logging interface
  • Exercise management
  • Category system
  • Settings screen

Milestone 3: Visualizations

  • Exercise graphs (line charts)
  • Calendar view
  • Statistics dashboard
  • Progress tracking

Milestone 4: Advanced Features

  • Personal records
  • Routines/templates
  • Body measurements
  • Goals tracking
  • Rest timer

Milestone 5: Polish & Deploy

  • App icons & splash screens
  • Onboarding flow
  • App store optimization
  • Beta testing
  • Public release πŸš€

🀝 Contributing

If you're building on this research:

  1. ⭐ Star this repo
  2. πŸ“ Document your findings
  3. πŸ”„ Share improvements
  4. πŸ› Report issues
  5. πŸ’‘ Suggest features

πŸ“š Additional Resources

FitNotes

Development

Android Reverse Engineering

πŸ“„ License

This research documentation is provided for educational and interoperability purposes.

Research & Documentation: MIT License
FitNotes App: Β© Original developer (not affiliated)
Your Implementation: Your choice of license


πŸ™ Acknowledgments

  • FitNotes Developer - For creating an excellent workout tracking app
  • jadx Team - For the amazing decompilation tool
  • Expo Team - For making cross-platform development accessible
  • Open Source Community - For the tools and libraries

⚑ Quick Links


Status: βœ… Research Complete | 🚧 Implementation Ready

Last Updated: March 22, 2026

Questions? Open an issue or start a discussion!

About

Researching FitNotes and building a 100% compatible, cross-platform Workout Tracker app with Expo.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages