react-native-nitro-pose-exercises 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/README.md +192 -159
  2. package/android/src/main/java/com/margelo/nitro/nitroposeexercises/NitroPoseExercises.kt +121 -4
  3. package/ios/NitroPoseExercises.swift +128 -11
  4. package/lib/module/NitroPoseExercises.nitro.js.map +1 -1
  5. package/lib/module/config/bicep-curl.js +3 -0
  6. package/lib/module/config/bicep-curl.js.map +1 -1
  7. package/lib/module/config/boat-pose.js +44 -0
  8. package/lib/module/config/boat-pose.js.map +1 -0
  9. package/lib/module/config/bow-pose.js +37 -0
  10. package/lib/module/config/bow-pose.js.map +1 -0
  11. package/lib/module/config/bridge-pose.js +37 -0
  12. package/lib/module/config/bridge-pose.js.map +1 -0
  13. package/lib/module/config/calf-raise.js +47 -0
  14. package/lib/module/config/calf-raise.js.map +1 -0
  15. package/lib/module/config/camel-pose.js +37 -0
  16. package/lib/module/config/camel-pose.js.map +1 -0
  17. package/lib/module/config/chair-pose.js +3 -0
  18. package/lib/module/config/chair-pose.js.map +1 -1
  19. package/lib/module/config/childs-pose.js +42 -0
  20. package/lib/module/config/childs-pose.js.map +1 -0
  21. package/lib/module/config/cobra-pose.js +3 -0
  22. package/lib/module/config/cobra-pose.js.map +1 -1
  23. package/lib/module/config/cobra-wings.js +47 -0
  24. package/lib/module/config/cobra-wings.js.map +1 -0
  25. package/lib/module/config/dead-lift.js +54 -0
  26. package/lib/module/config/dead-lift.js.map +1 -0
  27. package/lib/module/config/downward-dog.js +3 -0
  28. package/lib/module/config/downward-dog.js.map +1 -1
  29. package/lib/module/config/extended-side-angle.js +49 -0
  30. package/lib/module/config/extended-side-angle.js.map +1 -0
  31. package/lib/module/config/fish-pose.js +37 -0
  32. package/lib/module/config/fish-pose.js.map +1 -0
  33. package/lib/module/config/front-raise.js +54 -0
  34. package/lib/module/config/front-raise.js.map +1 -0
  35. package/lib/module/config/glute-bridge.js +49 -0
  36. package/lib/module/config/glute-bridge.js.map +1 -0
  37. package/lib/module/config/hip-abduction.js +42 -0
  38. package/lib/module/config/hip-abduction.js.map +1 -0
  39. package/lib/module/config/knee-raise.js +47 -0
  40. package/lib/module/config/knee-raise.js.map +1 -0
  41. package/lib/module/config/lateral-raise.js +54 -0
  42. package/lib/module/config/lateral-raise.js.map +1 -0
  43. package/lib/module/config/leg-raise.js +49 -0
  44. package/lib/module/config/leg-raise.js.map +1 -0
  45. package/lib/module/config/lunge.js +3 -0
  46. package/lib/module/config/lunge.js.map +1 -1
  47. package/lib/module/config/mountain-pose.js +49 -0
  48. package/lib/module/config/mountain-pose.js.map +1 -0
  49. package/lib/module/config/overarm-reach.js +47 -0
  50. package/lib/module/config/overarm-reach.js.map +1 -0
  51. package/lib/module/config/plank.js +3 -0
  52. package/lib/module/config/plank.js.map +1 -1
  53. package/lib/module/config/pull-up.js +47 -0
  54. package/lib/module/config/pull-up.js.map +1 -0
  55. package/lib/module/config/pushup.js +4 -0
  56. package/lib/module/config/pushup.js.map +1 -1
  57. package/lib/module/config/reverse-warrior.js +49 -0
  58. package/lib/module/config/reverse-warrior.js.map +1 -0
  59. package/lib/module/config/shoulder-press.js +3 -0
  60. package/lib/module/config/shoulder-press.js.map +1 -1
  61. package/lib/module/config/side-lung.js +54 -0
  62. package/lib/module/config/side-lung.js.map +1 -0
  63. package/lib/module/config/side-plank.js +37 -0
  64. package/lib/module/config/side-plank.js.map +1 -0
  65. package/lib/module/config/situp.js +3 -0
  66. package/lib/module/config/situp.js.map +1 -1
  67. package/lib/module/config/squat.js +3 -0
  68. package/lib/module/config/squat.js.map +1 -1
  69. package/lib/module/config/sumo-squat.js +54 -0
  70. package/lib/module/config/sumo-squat.js.map +1 -0
  71. package/lib/module/config/tree-pose.js +3 -0
  72. package/lib/module/config/tree-pose.js.map +1 -1
  73. package/lib/module/config/triangle-pose.js +49 -0
  74. package/lib/module/config/triangle-pose.js.map +1 -0
  75. package/lib/module/config/tricep-dip.js +4 -0
  76. package/lib/module/config/tricep-dip.js.map +1 -1
  77. package/lib/module/config/v-up.js +42 -0
  78. package/lib/module/config/v-up.js.map +1 -0
  79. package/lib/module/config/wall-sit.js +3 -0
  80. package/lib/module/config/wall-sit.js.map +1 -1
  81. package/lib/module/config/warrior-i.js +3 -0
  82. package/lib/module/config/warrior-i.js.map +1 -1
  83. package/lib/module/config/warrior-ii.js +3 -0
  84. package/lib/module/config/warrior-ii.js.map +1 -1
  85. package/lib/module/config/warrior-iii.js +61 -0
  86. package/lib/module/config/warrior-iii.js.map +1 -0
  87. package/lib/module/index.js +31 -3
  88. package/lib/module/index.js.map +1 -1
  89. package/lib/typescript/src/NitroPoseExercises.nitro.d.ts +9 -1
  90. package/lib/typescript/src/NitroPoseExercises.nitro.d.ts.map +1 -1
  91. package/lib/typescript/src/config/bicep-curl.d.ts.map +1 -1
  92. package/lib/typescript/src/config/boat-pose.d.ts +3 -0
  93. package/lib/typescript/src/config/boat-pose.d.ts.map +1 -0
  94. package/lib/typescript/src/config/bow-pose.d.ts +3 -0
  95. package/lib/typescript/src/config/bow-pose.d.ts.map +1 -0
  96. package/lib/typescript/src/config/bridge-pose.d.ts +3 -0
  97. package/lib/typescript/src/config/bridge-pose.d.ts.map +1 -0
  98. package/lib/typescript/src/config/calf-raise.d.ts +3 -0
  99. package/lib/typescript/src/config/calf-raise.d.ts.map +1 -0
  100. package/lib/typescript/src/config/camel-pose.d.ts +3 -0
  101. package/lib/typescript/src/config/camel-pose.d.ts.map +1 -0
  102. package/lib/typescript/src/config/chair-pose.d.ts.map +1 -1
  103. package/lib/typescript/src/config/childs-pose.d.ts +3 -0
  104. package/lib/typescript/src/config/childs-pose.d.ts.map +1 -0
  105. package/lib/typescript/src/config/cobra-pose.d.ts.map +1 -1
  106. package/lib/typescript/src/config/cobra-wings.d.ts +3 -0
  107. package/lib/typescript/src/config/cobra-wings.d.ts.map +1 -0
  108. package/lib/typescript/src/config/dead-lift.d.ts +3 -0
  109. package/lib/typescript/src/config/dead-lift.d.ts.map +1 -0
  110. package/lib/typescript/src/config/downward-dog.d.ts.map +1 -1
  111. package/lib/typescript/src/config/extended-side-angle.d.ts +3 -0
  112. package/lib/typescript/src/config/extended-side-angle.d.ts.map +1 -0
  113. package/lib/typescript/src/config/fish-pose.d.ts +3 -0
  114. package/lib/typescript/src/config/fish-pose.d.ts.map +1 -0
  115. package/lib/typescript/src/config/front-raise.d.ts +3 -0
  116. package/lib/typescript/src/config/front-raise.d.ts.map +1 -0
  117. package/lib/typescript/src/config/glute-bridge.d.ts +3 -0
  118. package/lib/typescript/src/config/glute-bridge.d.ts.map +1 -0
  119. package/lib/typescript/src/config/hip-abduction.d.ts +3 -0
  120. package/lib/typescript/src/config/hip-abduction.d.ts.map +1 -0
  121. package/lib/typescript/src/config/knee-raise.d.ts +3 -0
  122. package/lib/typescript/src/config/knee-raise.d.ts.map +1 -0
  123. package/lib/typescript/src/config/lateral-raise.d.ts +3 -0
  124. package/lib/typescript/src/config/lateral-raise.d.ts.map +1 -0
  125. package/lib/typescript/src/config/leg-raise.d.ts +3 -0
  126. package/lib/typescript/src/config/leg-raise.d.ts.map +1 -0
  127. package/lib/typescript/src/config/lunge.d.ts.map +1 -1
  128. package/lib/typescript/src/config/mountain-pose.d.ts +3 -0
  129. package/lib/typescript/src/config/mountain-pose.d.ts.map +1 -0
  130. package/lib/typescript/src/config/overarm-reach.d.ts +3 -0
  131. package/lib/typescript/src/config/overarm-reach.d.ts.map +1 -0
  132. package/lib/typescript/src/config/plank.d.ts.map +1 -1
  133. package/lib/typescript/src/config/pull-up.d.ts +3 -0
  134. package/lib/typescript/src/config/pull-up.d.ts.map +1 -0
  135. package/lib/typescript/src/config/pushup.d.ts.map +1 -1
  136. package/lib/typescript/src/config/reverse-warrior.d.ts +3 -0
  137. package/lib/typescript/src/config/reverse-warrior.d.ts.map +1 -0
  138. package/lib/typescript/src/config/shoulder-press.d.ts.map +1 -1
  139. package/lib/typescript/src/config/side-lung.d.ts +3 -0
  140. package/lib/typescript/src/config/side-lung.d.ts.map +1 -0
  141. package/lib/typescript/src/config/side-plank.d.ts +3 -0
  142. package/lib/typescript/src/config/side-plank.d.ts.map +1 -0
  143. package/lib/typescript/src/config/situp.d.ts.map +1 -1
  144. package/lib/typescript/src/config/squat.d.ts.map +1 -1
  145. package/lib/typescript/src/config/sumo-squat.d.ts +3 -0
  146. package/lib/typescript/src/config/sumo-squat.d.ts.map +1 -0
  147. package/lib/typescript/src/config/tree-pose.d.ts.map +1 -1
  148. package/lib/typescript/src/config/triangle-pose.d.ts +3 -0
  149. package/lib/typescript/src/config/triangle-pose.d.ts.map +1 -0
  150. package/lib/typescript/src/config/tricep-dip.d.ts.map +1 -1
  151. package/lib/typescript/src/config/v-up.d.ts +3 -0
  152. package/lib/typescript/src/config/v-up.d.ts.map +1 -0
  153. package/lib/typescript/src/config/wall-sit.d.ts.map +1 -1
  154. package/lib/typescript/src/config/warrior-i.d.ts.map +1 -1
  155. package/lib/typescript/src/config/warrior-ii.d.ts.map +1 -1
  156. package/lib/typescript/src/config/warrior-iii.d.ts +3 -0
  157. package/lib/typescript/src/config/warrior-iii.d.ts.map +1 -0
  158. package/lib/typescript/src/index.d.ts +26 -0
  159. package/lib/typescript/src/index.d.ts.map +1 -1
  160. package/nitrogen/generated/android/c++/JCameraAngleType.hpp +58 -0
  161. package/nitrogen/generated/android/c++/JExerciseConfig.hpp +19 -3
  162. package/nitrogen/generated/android/c++/JHybridNitroPoseExercisesSpec.cpp +47 -0
  163. package/nitrogen/generated/android/c++/JHybridNitroPoseExercisesSpec.hpp +5 -0
  164. package/nitrogen/generated/android/c++/JPostureFamily.hpp +73 -0
  165. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/CameraAngleType.kt +23 -0
  166. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/ExerciseConfig.kt +19 -4
  167. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/HybridNitroPoseExercisesSpec.kt +32 -0
  168. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroposeexercises/PostureFamily.kt +28 -0
  169. package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Bridge.hpp +9 -0
  170. package/nitrogen/generated/ios/NitroPoseExercises-Swift-Cxx-Umbrella.hpp +6 -0
  171. package/nitrogen/generated/ios/c++/HybridNitroPoseExercisesSpecSwift.hpp +28 -0
  172. package/nitrogen/generated/ios/swift/CameraAngleType.swift +40 -0
  173. package/nitrogen/generated/ios/swift/ExerciseConfig.swift +17 -2
  174. package/nitrogen/generated/ios/swift/HybridNitroPoseExercisesSpec.swift +3 -0
  175. package/nitrogen/generated/ios/swift/HybridNitroPoseExercisesSpec_cxx.swift +76 -0
  176. package/nitrogen/generated/ios/swift/PostureFamily.swift +60 -0
  177. package/nitrogen/generated/shared/c++/CameraAngleType.hpp +76 -0
  178. package/nitrogen/generated/shared/c++/ExerciseConfig.hpp +20 -2
  179. package/nitrogen/generated/shared/c++/HybridNitroPoseExercisesSpec.cpp +5 -0
  180. package/nitrogen/generated/shared/c++/HybridNitroPoseExercisesSpec.hpp +5 -0
  181. package/nitrogen/generated/shared/c++/PostureFamily.hpp +96 -0
  182. package/package.json +1 -1
  183. package/src/NitroPoseExercises.nitro.ts +19 -0
  184. package/src/config/bicep-curl.ts +3 -0
  185. package/src/config/boat-pose.ts +36 -0
  186. package/src/config/bow-pose.ts +27 -0
  187. package/src/config/bridge-pose.ts +28 -0
  188. package/src/config/calf-raise.ts +30 -0
  189. package/src/config/camel-pose.ts +27 -0
  190. package/src/config/chair-pose.ts +3 -0
  191. package/src/config/childs-pose.ts +26 -0
  192. package/src/config/cobra-pose.ts +3 -0
  193. package/src/config/cobra-wings.ts +29 -0
  194. package/src/config/dead-lift.ts +38 -0
  195. package/src/config/downward-dog.ts +3 -0
  196. package/src/config/extended-side-angle.ts +36 -0
  197. package/src/config/fish-pose.ts +28 -0
  198. package/src/config/front-raise.ts +58 -0
  199. package/src/config/glute-bridge.ts +36 -0
  200. package/src/config/hip-abduction.ts +28 -0
  201. package/src/config/knee-raise.ts +29 -0
  202. package/src/config/lateral-raise.ts +58 -0
  203. package/src/config/leg-raise.ts +36 -0
  204. package/src/config/lunge.ts +3 -0
  205. package/src/config/mountain-pose.ts +36 -0
  206. package/src/config/overarm-reach.ts +49 -0
  207. package/src/config/plank.ts +3 -0
  208. package/src/config/pull-up.ts +30 -0
  209. package/src/config/pushup.ts +3 -0
  210. package/src/config/reverse-warrior.ts +36 -0
  211. package/src/config/shoulder-press.ts +3 -0
  212. package/src/config/side-lung.ts +37 -0
  213. package/src/config/side-plank.ts +28 -0
  214. package/src/config/situp.ts +3 -0
  215. package/src/config/squat.ts +3 -0
  216. package/src/config/sumo-squat.ts +38 -0
  217. package/src/config/tree-pose.ts +3 -0
  218. package/src/config/triangle-pose.ts +37 -0
  219. package/src/config/tricep-dip.ts +3 -0
  220. package/src/config/v-up.ts +29 -0
  221. package/src/config/wall-sit.ts +3 -0
  222. package/src/config/warrior-i.ts +3 -0
  223. package/src/config/warrior-ii.ts +3 -0
  224. package/src/config/warrior-iii.ts +45 -0
  225. package/src/index.tsx +31 -3
@@ -0,0 +1,30 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+
3
+ export const CALF_RAISE_CONFIG: ExerciseConfig = {
4
+ name: 'Calf Raise',
5
+ type: 'rep',
6
+ postureFamily: 'standingUpright',
7
+ visibilityThreshold: 0.2,
8
+ cameraAngle: 'front',
9
+ angles: [
10
+ { name: 'leftAnkle', landmarkA: 25, landmarkB: 27, landmarkC: 31 },
11
+ { name: 'rightAnkle', landmarkA: 26, landmarkB: 28, landmarkC: 32 },
12
+ { name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
13
+ ],
14
+ phases: [
15
+ { phase: 'down', angleName: 'leftAnkle', minAngle: 70, maxAngle: 95 },
16
+ { phase: 'up', angleName: 'leftAnkle', minAngle: 110, maxAngle: 150 },
17
+ ],
18
+ repSequence: ['down', 'up', 'down'],
19
+ formRules: [
20
+ {
21
+ name: 'kneesBending',
22
+ message: 'Keep your legs straight',
23
+ severity: 'warning',
24
+ angleName: 'leftKnee',
25
+ minAngle: 165,
26
+ maxAngle: 180,
27
+ },
28
+ ],
29
+ holdDurationMs: 0,
30
+ };
@@ -0,0 +1,27 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const CAMEL_POSE_CONFIG: ExerciseConfig = {
3
+ name: 'Camel Pose (Ustrasana)',
4
+ type: 'hold',
5
+ postureFamily: 'seated',
6
+ visibilityThreshold: 0.3,
7
+ cameraAngle: 'side',
8
+ angles: [
9
+ { name: 'hipExtension', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
10
+ { name: 'kneeAngle', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
11
+ ],
12
+ phases: [
13
+ { phase: 'hold', angleName: 'hipExtension', minAngle: 120, maxAngle: 165 },
14
+ ],
15
+ repSequence: [],
16
+ formRules: [
17
+ {
18
+ name: 'kneesTooWide',
19
+ message: 'Keep knees hip-width apart',
20
+ severity: 'warning',
21
+ angleName: 'kneeAngle',
22
+ minAngle: 80,
23
+ maxAngle: 100,
24
+ },
25
+ ],
26
+ holdDurationMs: 30000,
27
+ };
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
8
8
  export const CHAIR_POSE_CONFIG: ExerciseConfig = {
9
9
  name: 'Chair Pose (Utkatasana)',
10
10
  type: 'hold',
11
+ postureFamily: 'standingUpright',
12
+ visibilityThreshold: 0.4,
13
+ cameraAngle: 'side',
11
14
  angles: [
12
15
  {
13
16
  name: 'leftKnee',
@@ -0,0 +1,26 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const CHILDS_POSE_CONFIG: ExerciseConfig = {
3
+ name: "Child's Pose (Balasana)",
4
+ type: 'hold',
5
+ postureFamily: 'seated',
6
+ visibilityThreshold: 0.3,
7
+ cameraAngle: 'side',
8
+ angles: [
9
+ { name: 'hipFold', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
10
+ { name: 'kneeAngle', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
11
+ { name: 'arms', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
12
+ ],
13
+ phases: [{ phase: 'hold', angleName: 'hipFold', minAngle: 30, maxAngle: 80 }],
14
+ repSequence: [],
15
+ formRules: [
16
+ {
17
+ name: 'notRelaxing',
18
+ message: 'Relax into the pose — let your forehead rest',
19
+ severity: 'info',
20
+ angleName: 'hipFold',
21
+ minAngle: 30,
22
+ maxAngle: 80,
23
+ },
24
+ ],
25
+ holdDurationMs: 60000,
26
+ };
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
8
8
  export const COBRA_POSE_CONFIG: ExerciseConfig = {
9
9
  name: 'Cobra Pose (Bhujangasana)',
10
10
  type: 'hold',
11
+ postureFamily: 'horizontalProne',
12
+ visibilityThreshold: 0.25,
13
+ cameraAngle: 'side',
11
14
  angles: [
12
15
  {
13
16
  name: 'leftElbow',
@@ -0,0 +1,29 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const COBRA_WINGS_CONFIG: ExerciseConfig = {
3
+ name: 'Cobra Wings',
4
+ type: 'rep',
5
+ postureFamily: 'horizontalProne',
6
+ visibilityThreshold: 0.25,
7
+ cameraAngle: 'side',
8
+ angles: [
9
+ { name: 'hipExtension', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
10
+ { name: 'leftShoulder', landmarkA: 23, landmarkB: 11, landmarkC: 13 },
11
+ { name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
12
+ ],
13
+ phases: [
14
+ { phase: 'down', angleName: 'hipExtension', minAngle: 160, maxAngle: 180 },
15
+ { phase: 'up', angleName: 'hipExtension', minAngle: 120, maxAngle: 155 },
16
+ ],
17
+ repSequence: ['down', 'up', 'down'],
18
+ formRules: [
19
+ {
20
+ name: 'legsLifting',
21
+ message: 'Keep your legs on the ground',
22
+ severity: 'warning',
23
+ angleName: 'hipExtension',
24
+ minAngle: 110,
25
+ maxAngle: 180,
26
+ },
27
+ ],
28
+ holdDurationMs: 0,
29
+ };
@@ -0,0 +1,38 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+
3
+ export const DEADLIFT_CONFIG: ExerciseConfig = {
4
+ name: 'Deadlift',
5
+ type: 'rep',
6
+ postureFamily: 'standingUpright',
7
+ visibilityThreshold: 0.3,
8
+ cameraAngle: 'side',
9
+ angles: [
10
+ { name: 'leftHip', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
11
+ { name: 'rightHip', landmarkA: 12, landmarkB: 24, landmarkC: 26 },
12
+ { name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
13
+ ],
14
+ phases: [
15
+ { phase: 'up', angleName: 'leftHip', minAngle: 160, maxAngle: 180 },
16
+ { phase: 'down', angleName: 'leftHip', minAngle: 60, maxAngle: 120 },
17
+ ],
18
+ repSequence: ['up', 'down', 'up'],
19
+ formRules: [
20
+ {
21
+ name: 'roundedBack',
22
+ message: "Keep your back straight — don't round your spine",
23
+ severity: 'error',
24
+ angleName: 'leftHip',
25
+ minAngle: 50,
26
+ maxAngle: 180,
27
+ },
28
+ {
29
+ name: 'kneesTooForward',
30
+ message: 'Push your hips back — knees stay behind toes',
31
+ severity: 'warning',
32
+ angleName: 'leftKnee',
33
+ minAngle: 140,
34
+ maxAngle: 180,
35
+ },
36
+ ],
37
+ holdDurationMs: 0,
38
+ };
@@ -9,6 +9,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
9
9
  export const DOWNWARD_DOG_CONFIG: ExerciseConfig = {
10
10
  name: 'Downward Dog (Adho Mukha Svanasana)',
11
11
  type: 'hold',
12
+ postureFamily: 'inverted',
13
+ visibilityThreshold: 0.3,
14
+ cameraAngle: 'side',
12
15
  angles: [
13
16
  {
14
17
  name: 'hipAngle',
@@ -0,0 +1,36 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const EXTENDED_SIDE_ANGLE_CONFIG: ExerciseConfig = {
3
+ name: 'Extended Side Angle (Utthita Parsvakonasana)',
4
+ type: 'hold',
5
+ postureFamily: 'standingUpright',
6
+ visibilityThreshold: 0.4,
7
+ cameraAngle: 'front',
8
+ angles: [
9
+ { name: 'frontKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
10
+ { name: 'backLeg', landmarkA: 24, landmarkB: 26, landmarkC: 28 },
11
+ { name: 'topArm', landmarkA: 12, landmarkB: 14, landmarkC: 16 },
12
+ ],
13
+ phases: [
14
+ { phase: 'hold', angleName: 'frontKnee', minAngle: 80, maxAngle: 110 },
15
+ ],
16
+ repSequence: [],
17
+ formRules: [
18
+ {
19
+ name: 'backLegBent',
20
+ message: 'Straighten your back leg',
21
+ severity: 'warning',
22
+ angleName: 'backLeg',
23
+ minAngle: 160,
24
+ maxAngle: 180,
25
+ },
26
+ {
27
+ name: 'topArmBent',
28
+ message: 'Extend your top arm fully',
29
+ severity: 'info',
30
+ angleName: 'topArm',
31
+ minAngle: 160,
32
+ maxAngle: 180,
33
+ },
34
+ ],
35
+ holdDurationMs: 30000,
36
+ };
@@ -0,0 +1,28 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+
3
+ export const FISH_POSE_CONFIG: ExerciseConfig = {
4
+ name: 'Fish Pose (Matsyasana)',
5
+ type: 'hold',
6
+ postureFamily: 'supine',
7
+ visibilityThreshold: 0.3,
8
+ cameraAngle: 'side',
9
+ angles: [
10
+ { name: 'chestOpen', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
11
+ { name: 'legs', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
12
+ ],
13
+ phases: [
14
+ { phase: 'hold', angleName: 'chestOpen', minAngle: 130, maxAngle: 170 },
15
+ ],
16
+ repSequence: [],
17
+ formRules: [
18
+ {
19
+ name: 'legsNotStraight',
20
+ message: 'Keep your legs straight and together',
21
+ severity: 'info',
22
+ angleName: 'legs',
23
+ minAngle: 165,
24
+ maxAngle: 180,
25
+ },
26
+ ],
27
+ holdDurationMs: 30000,
28
+ };
@@ -0,0 +1,58 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+
3
+ export const FRONT_RAISE_CONFIG: ExerciseConfig = {
4
+ name: 'Front Raise',
5
+ type: 'rep',
6
+ postureFamily: 'standingUpright',
7
+ visibilityThreshold: 0.2,
8
+ cameraAngle: 'side',
9
+ angles: [
10
+ {
11
+ name: 'leftShoulderFlexion',
12
+ landmarkA: 23,
13
+ landmarkB: 11,
14
+ landmarkC: 15,
15
+ },
16
+ {
17
+ name: 'rightShoulderFlexion',
18
+ landmarkA: 24,
19
+ landmarkB: 12,
20
+ landmarkC: 16,
21
+ },
22
+ { name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
23
+ ],
24
+ phases: [
25
+ {
26
+ phase: 'down',
27
+ angleName: 'leftShoulderFlexion',
28
+ minAngle: 0,
29
+ maxAngle: 25,
30
+ },
31
+ {
32
+ phase: 'up',
33
+ angleName: 'leftShoulderFlexion',
34
+ minAngle: 75,
35
+ maxAngle: 110,
36
+ },
37
+ ],
38
+ repSequence: ['down', 'up', 'down'],
39
+ formRules: [
40
+ {
41
+ name: 'elbowBending',
42
+ message: 'Keep your arms straight — slight bend only',
43
+ severity: 'warning',
44
+ angleName: 'leftElbow',
45
+ minAngle: 155,
46
+ maxAngle: 180,
47
+ },
48
+ {
49
+ name: 'tooHigh',
50
+ message: 'Stop at shoulder height',
51
+ severity: 'info',
52
+ angleName: 'leftShoulderFlexion',
53
+ minAngle: 0,
54
+ maxAngle: 115,
55
+ },
56
+ ],
57
+ holdDurationMs: 0,
58
+ };
@@ -0,0 +1,36 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const GLUTE_BRIDGE_CONFIG: ExerciseConfig = {
3
+ name: 'Glute Bridge',
4
+ type: 'rep',
5
+ postureFamily: 'supine',
6
+ visibilityThreshold: 0.25,
7
+ cameraAngle: 'side',
8
+ angles: [
9
+ { name: 'hipExtension', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
10
+ { name: 'kneeAngle', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
11
+ ],
12
+ phases: [
13
+ { phase: 'down', angleName: 'hipExtension', minAngle: 80, maxAngle: 120 },
14
+ { phase: 'up', angleName: 'hipExtension', minAngle: 155, maxAngle: 180 },
15
+ ],
16
+ repSequence: ['down', 'up', 'down'],
17
+ formRules: [
18
+ {
19
+ name: 'hipsNotHigh',
20
+ message: 'Squeeze your glutes — push hips higher',
21
+ severity: 'warning',
22
+ angleName: 'hipExtension',
23
+ minAngle: 150,
24
+ maxAngle: 180,
25
+ },
26
+ {
27
+ name: 'kneesTooWide',
28
+ message: 'Keep knees hip-width apart',
29
+ severity: 'info',
30
+ angleName: 'kneeAngle',
31
+ minAngle: 75,
32
+ maxAngle: 110,
33
+ },
34
+ ],
35
+ holdDurationMs: 0,
36
+ };
@@ -0,0 +1,28 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const HIP_ABDUCTION_CONFIG: ExerciseConfig = {
3
+ name: 'Hip Abduction Standing',
4
+ postureFamily: 'standingUpright',
5
+ visibilityThreshold: 0.3,
6
+ cameraAngle: 'front',
7
+ type: 'rep',
8
+ angles: [
9
+ { name: 'legSpread', landmarkA: 25, landmarkB: 23, landmarkC: 24 },
10
+ { name: 'standingLeg', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
11
+ ],
12
+ phases: [
13
+ { phase: 'down', angleName: 'legSpread', minAngle: 0, maxAngle: 15 },
14
+ { phase: 'up', angleName: 'legSpread', minAngle: 30, maxAngle: 60 },
15
+ ],
16
+ repSequence: ['down', 'up', 'down'],
17
+ formRules: [
18
+ {
19
+ name: 'leaningOver',
20
+ message: "Keep your torso upright — don't lean",
21
+ severity: 'warning',
22
+ angleName: 'standingLeg',
23
+ minAngle: 165,
24
+ maxAngle: 180,
25
+ },
26
+ ],
27
+ holdDurationMs: 0,
28
+ };
@@ -0,0 +1,29 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const KNEE_RAISE_CONFIG: ExerciseConfig = {
3
+ name: 'Knee Raise',
4
+ type: 'rep',
5
+ postureFamily: 'supine',
6
+ visibilityThreshold: 0.25,
7
+ cameraAngle: 'side',
8
+ angles: [
9
+ { name: 'leftHip', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
10
+ { name: 'rightHip', landmarkA: 12, landmarkB: 24, landmarkC: 26 },
11
+ { name: 'torso', landmarkA: 11, landmarkB: 23, landmarkC: 27 },
12
+ ],
13
+ phases: [
14
+ { phase: 'down', angleName: 'leftHip', minAngle: 155, maxAngle: 180 },
15
+ { phase: 'up', angleName: 'leftHip', minAngle: 60, maxAngle: 110 },
16
+ ],
17
+ repSequence: ['down', 'up', 'down'],
18
+ formRules: [
19
+ {
20
+ name: 'leaningBack',
21
+ message: "Stay upright — don't lean back",
22
+ severity: 'warning',
23
+ angleName: 'torso',
24
+ minAngle: 160,
25
+ maxAngle: 180,
26
+ },
27
+ ],
28
+ holdDurationMs: 0,
29
+ };
@@ -0,0 +1,58 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+
3
+ export const LATERAL_RAISE_CONFIG: ExerciseConfig = {
4
+ name: 'Lateral Raise',
5
+ type: 'rep',
6
+ postureFamily: 'standingUpright',
7
+ visibilityThreshold: 0.3,
8
+ cameraAngle: 'front',
9
+ angles: [
10
+ {
11
+ name: 'leftShoulderAbduction',
12
+ landmarkA: 23,
13
+ landmarkB: 11,
14
+ landmarkC: 15,
15
+ },
16
+ {
17
+ name: 'rightShoulderAbduction',
18
+ landmarkA: 24,
19
+ landmarkB: 12,
20
+ landmarkC: 16,
21
+ },
22
+ { name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
23
+ ],
24
+ phases: [
25
+ {
26
+ phase: 'down',
27
+ angleName: 'leftShoulderAbduction',
28
+ minAngle: 5,
29
+ maxAngle: 30,
30
+ },
31
+ {
32
+ phase: 'up',
33
+ angleName: 'leftShoulderAbduction',
34
+ minAngle: 75,
35
+ maxAngle: 110,
36
+ },
37
+ ],
38
+ repSequence: ['down', 'up', 'down'],
39
+ formRules: [
40
+ {
41
+ name: 'elbowBending',
42
+ message: "Keep a slight bend — don't fully bend your elbows",
43
+ severity: 'warning',
44
+ angleName: 'leftElbow',
45
+ minAngle: 150,
46
+ maxAngle: 180,
47
+ },
48
+ {
49
+ name: 'raisingTooHigh',
50
+ message: "Stop at shoulder height — don't go above",
51
+ severity: 'info',
52
+ angleName: 'leftShoulderAbduction',
53
+ minAngle: 5,
54
+ maxAngle: 115,
55
+ },
56
+ ],
57
+ holdDurationMs: 0,
58
+ };
@@ -0,0 +1,36 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const LEG_RAISE_CONFIG: ExerciseConfig = {
3
+ name: 'Leg Raise',
4
+ type: 'rep',
5
+ postureFamily: 'supine',
6
+ visibilityThreshold: 0.25,
7
+ cameraAngle: 'side',
8
+ angles: [
9
+ { name: 'leftHip', landmarkA: 11, landmarkB: 23, landmarkC: 27 },
10
+ { name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
11
+ ],
12
+ phases: [
13
+ { phase: 'down', angleName: 'leftHip', minAngle: 150, maxAngle: 180 },
14
+ { phase: 'up', angleName: 'leftHip', minAngle: 60, maxAngle: 110 },
15
+ ],
16
+ repSequence: ['down', 'up', 'down'],
17
+ formRules: [
18
+ {
19
+ name: 'kneesBending',
20
+ message: 'Keep your legs straight',
21
+ severity: 'warning',
22
+ angleName: 'leftKnee',
23
+ minAngle: 160,
24
+ maxAngle: 180,
25
+ },
26
+ {
27
+ name: 'lowerBackLifting',
28
+ message: 'Press your lower back into the floor',
29
+ severity: 'warning',
30
+ angleName: 'leftHip',
31
+ minAngle: 50,
32
+ maxAngle: 180,
33
+ },
34
+ ],
35
+ holdDurationMs: 0,
36
+ };
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
8
8
  export const LUNGE_CONFIG: ExerciseConfig = {
9
9
  name: 'Lunge',
10
10
  type: 'rep',
11
+ postureFamily: 'supine',
12
+ visibilityThreshold: 0.25,
13
+ cameraAngle: 'side',
11
14
  angles: [
12
15
  {
13
16
  name: 'frontKnee',
@@ -0,0 +1,36 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const MOUNTAIN_POSE_CONFIG: ExerciseConfig = {
3
+ name: 'Mountain Pose (Tadasana)',
4
+ type: 'hold',
5
+ postureFamily: 'standingUpright',
6
+ visibilityThreshold: 0.4,
7
+ cameraAngle: 'front',
8
+ angles: [
9
+ { name: 'leftKnee', landmarkA: 23, landmarkB: 25, landmarkC: 27 },
10
+ { name: 'hipAngle', landmarkA: 11, landmarkB: 23, landmarkC: 25 },
11
+ { name: 'shoulderAlignment', landmarkA: 23, landmarkB: 11, landmarkC: 13 },
12
+ ],
13
+ phases: [
14
+ { phase: 'hold', angleName: 'leftKnee', minAngle: 170, maxAngle: 180 },
15
+ ],
16
+ repSequence: [],
17
+ formRules: [
18
+ {
19
+ name: 'slouching',
20
+ message: 'Stand tall — lengthen your spine',
21
+ severity: 'info',
22
+ angleName: 'hipAngle',
23
+ minAngle: 170,
24
+ maxAngle: 180,
25
+ },
26
+ {
27
+ name: 'shouldersTense',
28
+ message: 'Relax your shoulders down',
29
+ severity: 'info',
30
+ angleName: 'shoulderAlignment',
31
+ minAngle: 5,
32
+ maxAngle: 25,
33
+ },
34
+ ],
35
+ holdDurationMs: 30000,
36
+ };
@@ -0,0 +1,49 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+ export const OVERARM_REACH_CONFIG: ExerciseConfig = {
3
+ name: 'Overarm Reach',
4
+ type: 'rep',
5
+ postureFamily: 'standingUpright',
6
+ visibilityThreshold: 0.3,
7
+ cameraAngle: 'front',
8
+ angles: [
9
+ {
10
+ name: 'leftShoulderAbduction',
11
+ landmarkA: 23,
12
+ landmarkB: 11,
13
+ landmarkC: 15,
14
+ },
15
+ {
16
+ name: 'rightShoulderAbduction',
17
+ landmarkA: 24,
18
+ landmarkB: 12,
19
+ landmarkC: 16,
20
+ },
21
+ { name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
22
+ ],
23
+ phases: [
24
+ {
25
+ phase: 'down',
26
+ angleName: 'leftShoulderAbduction',
27
+ minAngle: 0,
28
+ maxAngle: 30,
29
+ },
30
+ {
31
+ phase: 'up',
32
+ angleName: 'leftShoulderAbduction',
33
+ minAngle: 155,
34
+ maxAngle: 180,
35
+ },
36
+ ],
37
+ repSequence: ['down', 'up', 'down'],
38
+ formRules: [
39
+ {
40
+ name: 'elbowsBending',
41
+ message: 'Keep your arms straight',
42
+ severity: 'warning',
43
+ angleName: 'leftElbow',
44
+ minAngle: 160,
45
+ maxAngle: 180,
46
+ },
47
+ ],
48
+ holdDurationMs: 0,
49
+ };
@@ -8,6 +8,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
8
8
  export const PLANK_CONFIG: ExerciseConfig = {
9
9
  name: 'Plank',
10
10
  type: 'hold',
11
+ postureFamily: 'horizontalProne',
12
+ visibilityThreshold: 0.25,
13
+ cameraAngle: 'side',
11
14
  angles: [
12
15
  {
13
16
  name: 'leftHip',
@@ -0,0 +1,30 @@
1
+ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
2
+
3
+ export const PULL_UP_CONFIG: ExerciseConfig = {
4
+ name: 'Pull-Up',
5
+ type: 'rep',
6
+ postureFamily: 'standingUpright',
7
+ visibilityThreshold: 0.2,
8
+ cameraAngle: 'front',
9
+ angles: [
10
+ { name: 'leftElbow', landmarkA: 11, landmarkB: 13, landmarkC: 15 },
11
+ { name: 'rightElbow', landmarkA: 12, landmarkB: 14, landmarkC: 16 },
12
+ { name: 'leftShoulder', landmarkA: 23, landmarkB: 11, landmarkC: 13 },
13
+ ],
14
+ phases: [
15
+ { phase: 'down', angleName: 'leftElbow', minAngle: 150, maxAngle: 180 },
16
+ { phase: 'up', angleName: 'leftElbow', minAngle: 40, maxAngle: 90 },
17
+ ],
18
+ repSequence: ['down', 'up', 'down'],
19
+ formRules: [
20
+ {
21
+ name: 'kipping',
22
+ message: 'Control the movement — no swinging',
23
+ severity: 'warning',
24
+ angleName: 'leftShoulder',
25
+ minAngle: 0,
26
+ maxAngle: 160,
27
+ },
28
+ ],
29
+ holdDurationMs: 0,
30
+ };
@@ -9,6 +9,9 @@ import type { ExerciseConfig } from '../NitroPoseExercises.nitro';
9
9
  export const PUSHUP_CONFIG: ExerciseConfig = {
10
10
  name: 'Push-Up',
11
11
  type: 'rep',
12
+ postureFamily: 'horizontalProne',
13
+ visibilityThreshold: 0.2, // ← add
14
+ cameraAngle: 'front',
12
15
  angles: [
13
16
  {
14
17
  name: 'leftElbow',