Track your gym progress, completely offline.
This error occurs on some devices in the Play store (android 12). I can't reproduce it unless I forcefully pass NaN to my charts, so this might just fix the error. Related to #206. Exception java.lang.Error: at com.horcrux.svg.PathParser.parse_number (PathParser.java:627) at com.horcrux.svg.PathParser.parse_list_number (PathParser.java:594) at com.horcrux.svg.PathParser.parse (PathParser.java:118) at com.horcrux.svg.PathView.setD (PathView.java:28) at com.horcrux.svg.RenderableViewManager$PathViewManager.setD (RenderableViewManager.java:751) at com.horcrux.svg.RenderableViewManager$PathViewManager.setD (RenderableViewManager.java:740) at com.facebook.react.viewmanagers.RNSVGPathManagerDelegate.setProperty (RNSVGPathManagerDelegate.java:112) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps (ViewManagerPropertyUpdater.java:46) at com.facebook.react.uimanager.ViewManager.updateProperties (ViewManager.java:84) at com.facebook.react.uimanager.ViewManager.createViewInstance (ViewManager.java:188) at com.facebook.react.uimanager.ViewManager.createView (ViewManager.java:115) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView (NativeViewHierarchyManager.java:281) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute (UIViewOperationQueue.java:194) at com.facebook.react.uimanager.UIViewOperationQueue$1.run (UIViewOperationQueue.java:909) at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches (UIViewOperationQueue.java:1026) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded (UIViewOperationQueue.java:1086) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:175) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame (ChoreographerCompat.java:85) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1106) at android.view.Choreographer.doCallbacks (Choreographer.java:866) at android.view.Choreographer.doFrame (Choreographer.java:792) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1092) at android.os.Handler.handleCallback (Handler.java:938) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8751) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135) |
||
---|---|---|
.bundle | ||
.vscode | ||
.yarn/releases | ||
android | ||
ios | ||
metadata/en-US | ||
migrations | ||
.buckconfig | ||
.eslintrc.js | ||
.fdignore | ||
.Gemfile | ||
.gitignore | ||
.rgignore | ||
.ruby-version | ||
.watchmanconfig | ||
.yarnrc.yml | ||
app.json | ||
App.tsx | ||
AppDrawer.tsx | ||
AppFab.tsx | ||
AppInput.tsx | ||
AppPieChart.tsx | ||
AppSnack.tsx | ||
AppStack.tsx | ||
babel.config.js | ||
best.service.ts | ||
Chart.tsx | ||
colors.ts | ||
ConfirmDialog.tsx | ||
constants.ts | ||
conversions.ts | ||
count-many.ts | ||
data-source.ts | ||
days.ts | ||
db.ts | ||
deno.json | ||
deploy.mjs | ||
drawer-params.ts | ||
DrawerHeader.tsx | ||
EditExercise.tsx | ||
EditExercises.tsx | ||
EditPlan.tsx | ||
EditSet.tsx | ||
EditSets.tsx | ||
EditWeight.tsx | ||
emitter.ts | ||
ExerciseItem.tsx | ||
ExerciseList.tsx | ||
FatalError.tsx | ||
fix-numeric.ts | ||
Gemfile | ||
Gemfile.lock | ||
GraphsList.tsx | ||
gym-set.ts | ||
index.js | ||
input.ts | ||
InsightsPage.tsx | ||
install.sh | ||
jest.config.js | ||
jestSetup.ts | ||
LICENSE | ||
ListMenu.tsx | ||
metrics.ts | ||
metro.config.js | ||
muscle-groups.ts | ||
options.ts | ||
organize.sh | ||
package-lock.json | ||
package.json | ||
Page.tsx | ||
periods.ts | ||
plan.ts | ||
PlanItem.tsx | ||
PlanList.tsx | ||
PrimaryButton.tsx | ||
react-native.config.js | ||
README.md | ||
release.sh | ||
route.ts | ||
Select.tsx | ||
SetItem.tsx | ||
SetList.tsx | ||
settings.ts | ||
SettingsPage.tsx | ||
StackHeader.tsx | ||
StartPlan.tsx | ||
StartPlanItem.tsx | ||
Switch.tsx | ||
TimerPage.tsx | ||
TimerProgress.tsx | ||
toast.ts | ||
tsconfig.json | ||
use-theme.ts | ||
use-timer.ts | ||
ViewGraph.tsx | ||
ViewSetList.tsx | ||
ViewWeightGraph.tsx | ||
volume.ts | ||
weight.ts | ||
WeightItem.tsx | ||
WeightList.tsx | ||
write.ts |
Massive
Massive tracks your reps and sets at the gym. No internet connectivity or high spec device is required.
Features
- Track weight, reps and sets
- Rest timers after each set
- Progress graphs
- Day planner
![Get it on Google Play](https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png)
![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)
Screenshots
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/home.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/edit.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/timer.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/plans.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/plan-edit.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/plan-start.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/best-view.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/settings.png)
![](/joseph/Massive/media/commit/1921ecb9f4d32ec8e6069fd4e31ea4634cdbceab/metadata/en-US/images/phoneScreenshots/drawer.png)
Building from Source
First follow the React Native Environment Setup. Then run the following command:
cd android
./gradlew assembleRelease
The apk file can be found at android/app/build/outputs/apk/release/app-release.apk
Running in Development
First ensure Node.js dependencies are installed:
npm install
Then start the metro server:
npm start
Then (in a separate terminal) run the android
script:
npm run android
Fdroid Metadata
You can find the metadata yaml file in the fdroiddata repository: https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/com.massive.yml