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
- π€ 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
cd workout-tracker
npm install
npm start # Start Expo dev server
npm run android # Run on Android
npm run ios # Run on iOSnpm 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)npm run build:android:preview # APK for testing
npm run build:ios:preview # IPA for testing
npm run build:production # AAB + IPA for app storesFull details: BUILD_AND_RELEASE.md
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
- π Project Status - Current implementation status, roadmap, and completion percentage
- π Bug Status - Known issues, fixes, and tracking
- π Workout Tracker App - Main React Native implementation
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
-
jadx - DEX to Java decompiler
- Decompiled APK to readable Java source
- Preserved structure and comments
- Generated both sources and resources
-
unzip - APK extraction
- APK is just a ZIP archive
- Extracted raw resources and manifests
-
grep/find - Code analysis
- Searched for export/import logic
- Found database schemas
- Identified key classes
- β Extract APK - Unzipped APK to access raw files
- β Decompile - Used jadx to convert DEX to Java
- β
Analyze Export - Found
ExportManager,WorkoutExportDataLoader,CsvWriter - β Map Database - Discovered table schemas and relationships
- β Document Format - Reverse-engineered exact CSV structure
- β Research UI - Analyzed activities, fragments, layouts
- β Identify Features - Catalogued all app features
- β Create Guide - Wrote implementation roadmap
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:SSorMM:SS
category β exercise β training_log
β
comment
- Weight + Reps - Bench Press, Squats
- Bodyweight + Reps - Pull-ups, Push-ups
- Cardio - Running, Cycling (Distance + Time)
- Timed - Plank (Time only)
- Weight Only - Deadlift 1RM
- Reps Only - Jumping jacks
# 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- Phase 1 (Week 1-2): Database + CSV Import/Export
- Phase 2 (Week 3-4): Core UI (Home, Workout Log, Exercise List)
- Phase 3 (Week 5): Settings, Export/Import UI
- Phase 4 (Week 6+): Graphs, Calendar, Advanced Features
- Export data from FitNotes
- Import into your app
- Verify data accuracy
- Export from your app
- Re-import into FitNotes β
| 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
- β Android only (no iOS)
- β No web version
- β No cloud sync
- β Limited API/integration
- β Closed source
- β No active development (last update 2023)
- β Cross-platform (iOS, Android, Web)
- β Cloud sync (optional)
- β Modern UI/UX
- β Active development
- β Open source (if you choose)
- β 100% FitNotes data compatible
- 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:
com.github.jamesgay.fitnotes - Version: 25.1 (analyzed)
- Source: APKPure
- 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/
- β¨ Simple, intuitive UI
- β¨ Fast workout entry
- β¨ Comprehensive tracking (6 exercise types)
- β¨ Excellent data export (CSV)
- β¨ Offline-first (no internet required)
- β¨ Respectful of user data
- π± iOS version
- βοΈ Optional cloud backup
- π¨ Modern Material Design 3
- π Automatic sync
- π Web version
- π€ Social features (optional)
- π More visualizations
- Understand FitNotes CSV format
- Create database schema
- Implement CSV export
- Implement CSV import
- Test with real FitNotes data
- Home screen with recent workouts
- Workout logging interface
- Exercise management
- Category system
- Settings screen
- Exercise graphs (line charts)
- Calendar view
- Statistics dashboard
- Progress tracking
- Personal records
- Routines/templates
- Body measurements
- Goals tracking
- Rest timer
- App icons & splash screens
- Onboarding flow
- App store optimization
- Beta testing
- Public release π
If you're building on this research:
- β Star this repo
- π Document your findings
- π Share improvements
- π Report issues
- π‘ Suggest features
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
- 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
Status: β Research Complete | π§ Implementation Ready
Last Updated: March 22, 2026
Questions? Open an issue or start a discussion!