Track your gym progress, completely offline.
Go to file
Brandon Presley 07c704841d Use foreground service for alarm completion
Many of our errors in production are caused
by the alarm module finishing. In devices after
android version 7 we are "required" to use
startForegroundService or else the following
error supposedly occurs:

Exception java.lang.IllegalStateException:
  at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1725)
  at android.app.ContextImpl.startService (ContextImpl.java:1680)
  at android.content.ContextWrapper.startService (ContextWrapper.java:731)
  at android.content.ContextWrapper.startService (ContextWrapper.java:731)
  at com.massive.AlarmModule$getTimer$1.onFinish (AlarmModule.kt:144)
  at android.os.CountDownTimer$1.handleMessage (CountDownTimer.java:127)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:236)
  at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:228)
  at java.lang.Thread.run (Thread.java:923)

I say supposedly because on all of my testing
devices (which are android 7+) this error
doesn't occur.
2024-02-08 20:58:08 +13:00
.bundle First commit 2022-06-30 18:50:52 +12:00
.vscode Add vscode configuration for debugging 2022-12-03 22:14:01 +13:00
.yarn/releases Fix .gitignore for yarn berry 2022-08-26 17:03:44 +12:00
android Use foreground service for alarm completion 2024-02-08 20:58:08 +13:00
ios Upgrade react-native to 0.72.1 2023-07-07 13:17:19 +12:00
metadata/en-US Revert "Update timer page screenshot" 2023-03-02 19:15:26 +13:00
migrations Add migrations to leading zeros for date settings 2024-02-05 14:24:53 +13:00
.Gemfile Add gemfile + lock 2022-11-04 18:50:52 +13:00
.buckconfig First commit 2022-06-30 18:50:52 +12:00
.eslintrc.js Ignore mock-providers.tsx 2023-07-17 16:46:23 +12:00
.fdignore Add ability to customize primary color 2022-09-24 13:57:51 +12:00
.gitignore Add profiles dir to gitignore 2023-09-04 14:15:53 +12:00
.rgignore Split out routes 2022-07-15 16:34:06 +12:00
.ruby-version Change ruby version to match what is required in ios 2022-11-15 18:10:30 +13:00
.watchmanconfig Run prettier on project directory 2022-09-01 23:52:33 +12:00
.yarnrc.yml Upgrade yarn version 2022-07-19 16:24:05 +12:00
App.tsx Change logging 2024-02-07 17:31:13 +13:00
AppDrawer.tsx Fix progress bar not showing on some pages - 2.2 🚀 2023-11-15 14:32:29 +13:00
AppFab.tsx Fix colors on fabs 2023-11-14 14:44:10 +13:00
AppInput.tsx Replace useDark with useTheme - 1.185 🚀 2023-11-14 14:52:35 +13:00
AppPieChart.tsx Change pie chart colors 2023-10-28 15:18:47 +13:00
AppSnack.tsx Improve performance of app - 1.182 🚀 2023-11-13 17:37:53 +13:00
AppStack.tsx Organize imports 2023-11-15 11:21:49 +13:00
Chart.tsx Make charts smooth and curvy - 1.169 🚀 2023-11-06 23:08:36 +13:00
ConfirmDialog.tsx Run prettier 2023-08-12 15:23:02 +12:00
DrawerHeader.tsx Rename drawer-param-list -> drawer-params 2023-11-15 11:08:00 +13:00
EditExercise.tsx Add settings for default fields on Exercise - 2.1 🚀 2023-11-15 14:05:25 +13:00
EditExercises.tsx Change logging 2024-02-07 17:31:13 +13:00
EditPlan.tsx Handle fresh user experience better for Plans - 2.9 🚀 2023-11-29 12:55:18 +13:00
EditSet.tsx Add more information to rest timer notifications - 2.11 🚀 2024-02-07 17:41:38 +13:00
EditSets.tsx Fix wrong text color on primary buttons - 1.187 🚀 2023-11-15 13:07:58 +13:00
EditWeight.tsx Show both date and time by default 2023-11-21 19:14:53 +13:00
ExerciseItem.tsx Change logging 2024-02-07 17:31:13 +13:00
ExerciseList.tsx Fix some database drift 2023-11-13 18:13:23 +13:00
FatalError.tsx Factor out FatalError component from App.tsx 2023-11-15 12:14:34 +13:00
Gemfile Upgrade react-native to 0.72.1 2023-07-07 13:17:19 +12:00
Gemfile.lock Get ios running 2022-11-15 18:10:48 +13:00
GraphsList.tsx Organize imports 2023-11-15 11:21:49 +13:00
InsightsPage.tsx Remove loading indicator where load times are fast 2023-11-15 15:53:32 +13:00
LICENSE Add GPL3 license 2022-07-08 11:59:31 +12:00
ListMenu.tsx Swap to using MaterialCommunityIcons 2023-10-19 18:28:56 +13:00
Page.tsx Swap to using MaterialCommunityIcons 2023-10-19 18:28:56 +13:00
PlanItem.tsx Replace useDark with useTheme - 1.185 🚀 2023-11-14 14:52:35 +13:00
PlanList.tsx Organize imports 2023-11-15 11:21:49 +13:00
PrimaryButton.tsx Fix wrong text color on primary buttons - 1.187 🚀 2023-11-15 13:07:58 +13:00
README.md Replace/Remove all references to yarn -> npm 2023-10-26 20:32:22 +13:00
Select.tsx Re organize imports of Select.tsx 2023-11-09 13:15:45 +13:00
SetItem.tsx Show both date and time by default 2023-11-21 19:14:53 +13:00
SetList.tsx Change logging 2024-02-07 17:31:13 +13:00
SettingsPage.tsx Move dark/light color selects next to buttons 2024-02-07 15:52:08 +13:00
StackHeader.tsx Swap to using MaterialCommunityIcons 2023-10-19 18:28:56 +13:00
StartPlan.tsx Change logging 2024-02-07 17:31:13 +13:00
StartPlanItem.tsx Stop timer when you undo a set from an open plan 2023-11-15 16:05:28 +13:00
Switch.tsx Remove track color setting from Switch 2023-08-22 11:53:12 +12:00
TimerPage.tsx Remove progress circle from timer page 2023-11-29 09:25:22 +13:00
TimerProgress.tsx Change logging 2024-02-07 17:31:13 +13:00
ViewGraph.tsx Change logging 2024-02-07 17:31:13 +13:00
ViewSetList.tsx Show both date and time by default 2023-11-21 19:14:53 +13:00
ViewWeightGraph.tsx Fix view weight graph for small screens 2023-11-27 11:53:54 +13:00
WeightItem.tsx Show both date and time by default 2023-11-21 19:14:53 +13:00
WeightList.tsx Change logging 2024-02-07 17:31:13 +13:00
app.json Run prettier on project directory 2022-09-01 23:52:33 +12:00
babel.config.js Upgrade react-native to 0.72.1 2023-07-07 13:17:19 +12:00
best.service.ts Paginate graphs 2023-08-14 10:42:15 +12:00
colors.ts Change color name of Red to Brandy 2023-11-21 19:24:47 +13:00
constants.ts Simplify the peek view of exercises from Plan 2023-11-15 16:03:58 +13:00
conversions.ts Add auto converter - 1.186 🚀 2023-11-15 11:03:23 +13:00
count-many.ts Run prettier 2023-08-12 15:23:02 +12:00
data-source.ts Add migrations to leading zeros for date settings 2024-02-05 14:24:53 +13:00
days.ts Move time.ts -> days.ts 2023-11-06 14:27:27 +13:00
db.ts Add weight page 2023-10-21 11:57:31 +13:00
deno.json Use deno fmt instead of prettier 2023-06-27 15:16:59 +12:00
deploy.mjs Add platform independent deploy script 2024-02-08 18:54:06 +13:00
drawer-params.ts Rename drawer-param-list -> drawer-params 2023-11-15 11:08:00 +13:00
emitter.ts Replace usage of deprecated DeviceEventEmitter - 1.155 🚀 2023-09-04 14:32:40 +12:00
fix-numeric.ts Validate reps+weight on EditSet 2023-08-12 15:22:00 +12:00
gym-set.ts Remove redundant exports from gym-set.ts 2023-11-21 10:16:17 +13:00
index.js Upgrade react-native to 0.72.1 2023-07-07 13:17:19 +12:00
input.ts Run prettier 2023-08-12 15:23:02 +12:00
install.sh Fix install.sh script for new react-native output 2023-07-15 15:02:13 +12:00
jest.config.js Optimize root context 2022-10-31 21:00:10 +13:00
jestSetup.ts Run prettier 2023-08-12 15:23:02 +12:00
metrics.ts Change ViewGraph defaults to ORM > Best > Volume 2023-10-18 12:46:34 +13:00
metro.config.js Upgrade react-native to 0.72.1 2023-07-07 13:17:19 +12:00
muscle-groups.ts Add muscle groups 2023-11-09 12:23:19 +13:00
options.ts Simplify the peek view of exercises from Plan 2023-11-15 16:03:58 +13:00
organize.sh Organize all imports 2023-11-12 17:05:37 +13:00
package-lock.json Remove progress circle from timer page 2023-11-29 09:25:22 +13:00
package.json Add more information to rest timer notifications - 2.11 🚀 2024-02-07 17:41:38 +13:00
periods.ts Add period selector for "All time" in graphs 2024-02-07 11:42:24 +13:00
plan.ts Fix some database drift 2023-11-13 18:13:23 +13:00
react-native.config.js Ran prettier on react-native.config.js 2022-11-22 21:38:54 +13:00
release.sh Turn on proguard and separate build per cpu 2022-07-27 16:06:28 +12:00
route.ts Rename drawer-param-list -> drawer-params 2023-11-15 11:08:00 +13:00
settings.ts Default showing of steps to false 2023-11-21 19:25:18 +13:00
toast.ts Replace usage of deprecated DeviceEventEmitter - 1.155 🚀 2023-09-04 14:32:40 +12:00
tsconfig.json Fix type errors related to upgrade 2023-07-15 14:38:46 +12:00
use-theme.ts Rename useTheme to useAppTheme 2023-11-14 14:45:15 +13:00
use-timer.ts Improve responsiveness of timer page - 1.180 🚀 2023-11-12 23:37:58 +13:00
volume.ts Run prettier 2023-08-12 15:23:02 +12:00
weight.ts Fix some database drift 2023-11-13 18:13:23 +13:00
write.ts Run prettier 2023-08-12 15:23:02 +12:00

README.md

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

Screenshots

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