kinemotion 0.33.2__tar.gz → 0.35.0__tar.gz

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.

Potentially problematic release.


This version of kinemotion might be problematic. Click here for more details.

Files changed (476) hide show
  1. kinemotion-0.35.0/.basic-memory/api/supabase-authentication-setup-guide.md +428 -0
  2. kinemotion-0.35.0/.basic-memory/authentication/auth-provider-comparison-december-2025.md +43 -0
  3. kinemotion-0.35.0/.basic-memory/authentication/auth-providers-comparison-december-2025.md +13 -0
  4. kinemotion-0.35.0/.basic-memory/authentication/supabase-authentication-quick-start.md +88 -0
  5. kinemotion-0.35.0/.basic-memory/authentication/supabase-authentication-setup-guide.md +110 -0
  6. kinemotion-0.35.0/.basic-memory/authentication/supabase-authentication-technical-guide.md +428 -0
  7. kinemotion-0.35.0/.basic-memory/authentication/supabase-google-oauth-setup-guide.md +118 -0
  8. kinemotion-0.35.0/.basic-memory/authentication/supabase-production-setup-guide.md +250 -0
  9. kinemotion-0.35.0/.basic-memory/authentication/supabase-quick-start-guide.md +247 -0
  10. kinemotion-0.35.0/.basic-memory/codebase/validation-architecture-visual-hierarchy-after-refactoring.md +202 -0
  11. kinemotion-0.35.0/.basic-memory/codebase/validation-code-duplication-evidence.md +258 -0
  12. kinemotion-0.35.0/.basic-memory/codebase/validation-module-architecture-analysis.md +193 -0
  13. kinemotion-0.35.0/.basic-memory/codebase/validation-refactoring-complete-architecture-improvement.md +142 -0
  14. kinemotion-0.35.0/.basic-memory/deployment/backend-repository-split-migration-guide.md +935 -0
  15. kinemotion-0.35.0/.basic-memory/deployment/backend-repository-split-step-by-step-execution-guide.md +938 -0
  16. kinemotion-0.35.0/.basic-memory/deployment/cloud-run-security-least-privilege-service-account-setup.md +100 -0
  17. kinemotion-0.35.0/.basic-memory/deployment/current-kinemotion-architecture-correct-deployment-setup.md +102 -0
  18. kinemotion-0.35.0/.basic-memory/deployment/frontend-repository-split-migration-guide.md +597 -0
  19. kinemotion-0.35.0/.basic-memory/deployment/frontend-repository-split-step-by-step-execution-guide.md +849 -0
  20. kinemotion-0.35.0/.basic-memory/development/backend-authentication-and-logging-status.md +135 -0
  21. kinemotion-0.35.0/.basic-memory/development/backend-kinemotion-decoupling-strategy.md +863 -0
  22. kinemotion-0.35.0/.basic-memory/development/google-oauth-setup-script-final-review-production-ready.md +135 -0
  23. kinemotion-0.35.0/.basic-memory/development/google-oauth-setup-script-review-issues-and-recommendations.md +130 -0
  24. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/keyboard-interrupt-test-suite-failure-analysis.md +1 -1
  25. kinemotion-0.35.0/.basic-memory/development/p0-p1-p2-test-suite-fixes-final-report.md +11 -0
  26. kinemotion-0.35.0/.basic-memory/development/structured-logging-implementation-complete.md +7 -0
  27. kinemotion-0.35.0/.basic-memory/development/structured-logging-implementation.md +73 -0
  28. kinemotion-0.35.0/.basic-memory/development/supabase-dashboard-navigation-december-2025.md +47 -0
  29. kinemotion-0.35.0/.basic-memory/development/test-coverage-asymmetry-analysis-cmj-vs-drop-jump.md +158 -0
  30. kinemotion-0.35.0/.basic-memory/development/test-coverage-equivalence-achievement-summary.md +128 -0
  31. kinemotion-0.35.0/.basic-memory/development/test-suite-comprehensive-review-december-2025.md +304 -0
  32. kinemotion-0.35.0/.basic-memory/development/test-suite-comprehensive-review-structure-and-gaps.md +258 -0
  33. kinemotion-0.35.0/.basic-memory/development/test-suite-p0-p1-p2-fixes-complete-report.md +335 -0
  34. kinemotion-0.35.0/.basic-memory/development/test-suite-p0-p1-p2-fixes-progress-report.md +91 -0
  35. kinemotion-0.35.0/.basic-memory/development/unused-and-experimental-features-strategy.md +182 -0
  36. kinemotion-0.35.0/.basic-memory/development/unused-code-detection-prompt-template.md +265 -0
  37. kinemotion-0.35.0/.basic-memory/development/unused-code-identification-and-decorator-application-december-2025.md +322 -0
  38. kinemotion-0.35.0/.basic-memory/development/unused-code-verification-final-pass-december-2025.md +342 -0
  39. kinemotion-0.35.0/.basic-memory/development/vercel-authentication-options-for-user-id-tracking.md +218 -0
  40. kinemotion-0.35.0/.basic-memory/project-management/documentation-audit-december-2025.md +157 -0
  41. kinemotion-0.35.0/.basic-memory/project-management/kinemotion-supabase-production-configuration.md +42 -0
  42. kinemotion-0.35.0/.basic-memory/project-management/project-state-summary-december-2025.md +213 -0
  43. kinemotion-0.35.0/.basic-memory/project-management/supabase-setup-instructions-for-kinemotion.md +246 -0
  44. kinemotion-0.35.0/.basic-memory/strategy/third-party-auth-providers-with-free-tiers-december-2025.md +235 -0
  45. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/settings.local.json +3 -1
  46. {kinemotion-0.33.2 → kinemotion-0.35.0}/.cursor/mcp.json +19 -3
  47. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/workflows/deploy-backend.yml +44 -33
  48. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/workflows/release.yml +4 -0
  49. {kinemotion-0.33.2 → kinemotion-0.35.0}/.gitignore +2 -2
  50. kinemotion-0.35.0/.serena/memories/current-project-architecture.md +95 -0
  51. kinemotion-0.35.0/.serena/memories/deployment-checklist-and-known-issues.md +138 -0
  52. kinemotion-0.35.0/.serena/memories/deployment-setup-complete.md +38 -0
  53. kinemotion-0.35.0/.serena/memories/mvp-roadmap-and-priorities.md +138 -0
  54. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/project_overview.md +19 -23
  55. {kinemotion-0.33.2 → kinemotion-0.35.0}/CHANGELOG.md +121 -0
  56. {kinemotion-0.33.2 → kinemotion-0.35.0}/CLAUDE.md +68 -12
  57. {kinemotion-0.33.2 → kinemotion-0.35.0}/PKG-INFO +1 -1
  58. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/Dockerfile +8 -6
  59. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/README.md +7 -0
  60. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/pyproject.toml +5 -0
  61. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/src/kinemotion_backend/app.py +64 -22
  62. kinemotion-0.35.0/backend/src/kinemotion_backend/auth.py +181 -0
  63. kinemotion-0.35.0/backend/src/kinemotion_backend/logging_config.py +100 -0
  64. kinemotion-0.35.0/backend/src/kinemotion_backend/middleware.py +120 -0
  65. kinemotion-0.35.0/docs/development/test-suite-review-december-2025.md +356 -0
  66. kinemotion-0.35.0/docs/development/testing-standards.md +908 -0
  67. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/paper-downloader/download.py +3 -2
  68. {kinemotion-0.33.2 → kinemotion-0.35.0}/examples/bulk/bulk_processing.py +2 -1
  69. {kinemotion-0.33.2 → kinemotion-0.35.0}/examples/bulk/simple_example.py +2 -1
  70. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/package.json +1 -0
  71. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/App.tsx +36 -2
  72. kinemotion-0.35.0/frontend/src/components/Auth.tsx +164 -0
  73. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/hooks/useAnalysis.ts +11 -0
  74. kinemotion-0.35.0/frontend/src/hooks/useAuth.ts +130 -0
  75. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/index.css +220 -0
  76. kinemotion-0.35.0/frontend/src/lib/supabase.ts +16 -0
  77. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/yarn.lock +124 -0
  78. {kinemotion-0.33.2 → kinemotion-0.35.0}/pyproject.toml +20 -2
  79. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/README.md +54 -0
  80. kinemotion-0.35.0/scripts/find_unused_features.py +141 -0
  81. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/setup-github-deploy.sh +60 -1
  82. kinemotion-0.35.0/scripts/setup-google-oauth.sh +335 -0
  83. kinemotion-0.35.0/scripts/setup-supabase-local.sh +53 -0
  84. kinemotion-0.35.0/scripts/setup-supabase-production.sh +81 -0
  85. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/validate_known_heights.py +3 -1
  86. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/api.py +2 -2
  87. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cmj/analysis.py +21 -101
  88. kinemotion-0.33.2/src/kinemotion/core/cmj_metrics_validator.py → kinemotion-0.35.0/src/kinemotion/cmj/metrics_validator.py +27 -123
  89. kinemotion-0.33.2/src/kinemotion/core/cmj_validation_bounds.py → kinemotion-0.35.0/src/kinemotion/cmj/validation_bounds.py +1 -58
  90. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/cli_utils.py +26 -0
  91. kinemotion-0.35.0/src/kinemotion/core/experimental.py +103 -0
  92. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/filtering.py +7 -0
  93. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/smoothing.py +34 -0
  94. kinemotion-0.35.0/src/kinemotion/core/validation.py +198 -0
  95. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/dropjump/__init__.py +1 -1
  96. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/dropjump/analysis.py +23 -34
  97. kinemotion-0.33.2/src/kinemotion/core/dropjump_metrics_validator.py → kinemotion-0.35.0/src/kinemotion/dropjump/metrics_validator.py +20 -114
  98. kinemotion-0.33.2/src/kinemotion/core/dropjump_validation_bounds.py → kinemotion-0.35.0/src/kinemotion/dropjump/validation_bounds.py +1 -58
  99. kinemotion-0.35.0/tests/cli/__init__.py +0 -0
  100. kinemotion-0.35.0/tests/cli/test_cmj.py +986 -0
  101. kinemotion-0.33.2/tests/test_cli_dropjump.py → kinemotion-0.35.0/tests/cli/test_dropjump.py +41 -35
  102. kinemotion-0.35.0/tests/cmj/__init__.py +0 -0
  103. kinemotion-0.33.2/tests/test_cmj_analysis.py → kinemotion-0.35.0/tests/cmj/test_analysis.py +25 -140
  104. kinemotion-0.35.0/tests/cmj/test_api.py +451 -0
  105. kinemotion-0.33.2/tests/test_cmj_kinematics.py → kinemotion-0.35.0/tests/cmj/test_kinematics.py +4 -3
  106. kinemotion-0.33.2/tests/test_cmj_physiological_bounds.py → kinemotion-0.35.0/tests/cmj/test_physiological_bounds.py +12 -6
  107. kinemotion-0.35.0/tests/conftest.py +80 -0
  108. kinemotion-0.35.0/tests/core/__init__.py +0 -0
  109. kinemotion-0.35.0/tests/core/test_auto_tuning.py +359 -0
  110. kinemotion-0.35.0/tests/core/test_metadata.py +169 -0
  111. kinemotion-0.33.2/tests/test_com_estimation.py → kinemotion-0.35.0/tests/core/test_pose.py +102 -2
  112. kinemotion-0.35.0/tests/core/test_smoothing.py +967 -0
  113. kinemotion-0.35.0/tests/core/test_validation.py +664 -0
  114. kinemotion-0.33.2/tests/test_aspect_ratio.py → kinemotion-0.35.0/tests/core/test_video_io.py +108 -1
  115. kinemotion-0.35.0/tests/dropjump/__init__.py +0 -0
  116. kinemotion-0.35.0/tests/dropjump/test_analysis.py +559 -0
  117. {kinemotion-0.33.2/tests → kinemotion-0.35.0/tests/dropjump}/test_api.py +9 -28
  118. {kinemotion-0.33.2/tests → kinemotion-0.35.0/tests/dropjump}/test_kinematics.py +6 -2
  119. kinemotion-0.35.0/tests/dropjump/test_physiological_bounds.py +511 -0
  120. kinemotion-0.33.2/tests/test_dropjump_validation_integration.py → kinemotion-0.35.0/tests/dropjump/test_validation_integration.py +10 -9
  121. {kinemotion-0.33.2 → kinemotion-0.35.0}/uv.lock +464 -1
  122. kinemotion-0.33.2/backend/fly.toml +0 -79
  123. kinemotion-0.33.2/tests/test_cli_cmj.py +0 -369
  124. kinemotion-0.33.2/tests/test_joint_angles.py +0 -615
  125. kinemotion-0.33.2/tests/test_polyorder.py +0 -155
  126. kinemotion-0.33.2/tests/test_video_io.py +0 -114
  127. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/README.md +0 -0
  128. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/api/api-reference-quick-commands.md +0 -0
  129. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/biomechanics/camera-perspective-analysis-45deg-vs-lateral.md +0 -0
  130. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/biomechanics/cmj-landing-detection-window-validation.md +0 -0
  131. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/biomechanics/cmj-physiological-bounds-for-validation.md +0 -0
  132. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/biomechanics/cmj-validation-implementation-complete.md +0 -0
  133. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/biomechanics/drop-jump-vs-cmj-key-differences.md +0 -0
  134. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/biomechanics/technical-implementation-45deg-perspective-correction.md +0 -0
  135. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/codebase/codebase-architecture-overview.md +0 -0
  136. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/deployment/automated-deployment-setup-git-hub-actions-with-workload-identity-federation.md +0 -0
  137. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/deployment/cors-and-memory-issues-production-debugging-guide.md +0 -0
  138. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/deployment/production-deployment-guide-vercel-google-cloud-run.md +0 -0
  139. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/deployment/quick-deployment-commands-vercel-and-cloud-run.md +0 -0
  140. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/deployment/vercel-monorepo-deployment-best-practice.md +0 -0
  141. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/backend-code-coverage-analysis.md +0 -0
  142. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/backend-code-duplication-analysis.md +0 -0
  143. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/backend-sonar-cloud-integration-status.md +0 -0
  144. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/basic-memory-naming-hook-analysis.md +0 -0
  145. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/ci-caching-issue-investigation-deep-squat-test-failure.md +0 -0
  146. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/ci-vs-local-test-failure-investigation.md +0 -0
  147. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/claude-code-hook-configuration.md +0 -0
  148. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/cmj-phase-detection-testing-gap-analysis.md +0 -0
  149. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/development-standards-quality-gates.md +0 -0
  150. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/frontend-dependencies-analysis-nov-2025.md +0 -0
  151. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/hook-complete-audit-summary.md +0 -0
  152. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/hook-configuration-audit.md +0 -0
  153. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/hook-quick-reference.md +0 -0
  154. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/development/using-multiple-mcp-reasoning-servers-simultaneously.md +0 -0
  155. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/project-management/issue-12-mvp-scaffolding-complete.md +0 -0
  156. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/project-management/issue-12-unblocked-tasks-breakdown.md +0 -0
  157. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/project-management/issue-12-use-real-metrics-now.md +0 -0
  158. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/project-management/kinemotion-project-setup-complete.md +0 -0
  159. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/project-management/mcp-sequential-thinking-alternatives-analysis.md +0 -0
  160. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/project-management/specialized-subagents-routing-guide.md +0 -0
  161. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/strategy/deployment-decision-analysis-for-kinemotion.md +0 -0
  162. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/strategy/mvp-feedback-collection-plan.md +0 -0
  163. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/strategy/mvp-first-strategic-direction.md +0 -0
  164. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/strategy/mvp-validation-checkpoints.md +0 -0
  165. {kinemotion-0.33.2 → kinemotion-0.35.0}/.basic-memory/strategy/strategic-priority-tasks-current-roadmap.md +0 -0
  166. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/biomechanics-specialist.md +0 -0
  167. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/computer-vision-engineer.md +0 -0
  168. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/devops-cicd-engineer.md +0 -0
  169. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/frontend-developer.md +0 -0
  170. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/ml-data-scientist.md +0 -0
  171. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/project-manager.md +0 -0
  172. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/python-backend-developer.md +0 -0
  173. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/qa-test-engineer.md +0 -0
  174. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/agents/technical-writer.md +0 -0
  175. {kinemotion-0.33.2 → kinemotion-0.35.0}/.claude/hooks/fix-basic-memory-names.sh +0 -0
  176. {kinemotion-0.33.2 → kinemotion-0.35.0}/.dockerignore +0 -0
  177. {kinemotion-0.33.2 → kinemotion-0.35.0}/.gitattributes +0 -0
  178. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  179. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  180. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  181. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/dependabot.yml +0 -0
  182. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/pull_request_template.md +0 -0
  183. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/workflows/docs.yml +0 -0
  184. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/workflows/security.yml +0 -0
  185. {kinemotion-0.33.2 → kinemotion-0.35.0}/.github/workflows/test.yml +0 -0
  186. {kinemotion-0.33.2 → kinemotion-0.35.0}/.mcp.json +0 -0
  187. {kinemotion-0.33.2 → kinemotion-0.35.0}/.pre-commit-config.yaml +0 -0
  188. {kinemotion-0.33.2 → kinemotion-0.35.0}/.readthedocs.yml +0 -0
  189. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/.gitignore +0 -0
  190. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/backend-cors-fastapi-middleware-order.md +0 -0
  191. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/camera-perspective-validation-study.md +0 -0
  192. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/code_style_and_conventions.md +0 -0
  193. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/github-project-setup-summary.md +0 -0
  194. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/mvp-first-strategy.md +0 -0
  195. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/specialist-agents-routing.md +0 -0
  196. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/memories/suggested_commands.md +0 -0
  197. {kinemotion-0.33.2 → kinemotion-0.35.0}/.serena/project.yml +0 -0
  198. {kinemotion-0.33.2 → kinemotion-0.35.0}/.tool-versions +0 -0
  199. {kinemotion-0.33.2 → kinemotion-0.35.0}/.vercelignore +0 -0
  200. {kinemotion-0.33.2 → kinemotion-0.35.0}/CODE_OF_CONDUCT.md +0 -0
  201. {kinemotion-0.33.2 → kinemotion-0.35.0}/CONTRIBUTING.md +0 -0
  202. {kinemotion-0.33.2 → kinemotion-0.35.0}/Dockerfile +0 -0
  203. {kinemotion-0.33.2 → kinemotion-0.35.0}/GEMINI.md +0 -0
  204. {kinemotion-0.33.2 → kinemotion-0.35.0}/LICENSE +0 -0
  205. {kinemotion-0.33.2 → kinemotion-0.35.0}/README.md +0 -0
  206. {kinemotion-0.33.2 → kinemotion-0.35.0}/SECURITY.md +0 -0
  207. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/.dockerignore +0 -0
  208. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/.env.example +0 -0
  209. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/docs/fly-deployment.md +0 -0
  210. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/docs/implementation-summary.md +0 -0
  211. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/docs/setup.md +0 -0
  212. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/docs/tests.md +0 -0
  213. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/src/kinemotion_backend/__init__.py +0 -0
  214. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/README.md +0 -0
  215. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/__init__.py +0 -0
  216. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/conftest.py +0 -0
  217. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/test_api_endpoints.py +0 -0
  218. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/test_error_handling.py +0 -0
  219. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/test_health.py +0 -0
  220. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/test_r2_integration.py +0 -0
  221. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/tests/test_validation.py +0 -0
  222. {kinemotion-0.33.2 → kinemotion-0.35.0}/backend/uv.lock +0 -0
  223. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/README.md +0 -0
  224. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/api/cmj.md +0 -0
  225. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/api/core.md +0 -0
  226. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/api/dropjump.md +0 -0
  227. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/api/overview.md +0 -0
  228. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/agents-guide.md +0 -0
  229. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/errors-findings.md +0 -0
  230. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/testing.md +0 -0
  231. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/type-hints.md +0 -0
  232. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/validation-plan.md +0 -0
  233. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/validation-roadmap.md +0 -0
  234. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/development/wallball-norep-detection.md +0 -0
  235. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/bulk-processing.md +0 -0
  236. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/camera-setup.md +0 -0
  237. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/cloud-run-deployment.md +0 -0
  238. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/cmj-guide.md +0 -0
  239. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/cmj-recording-protocol-es.md +0 -0
  240. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/cmj-recording-protocol.md +0 -0
  241. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/deployment-checklist.md +0 -0
  242. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/local-testing.md +0 -0
  243. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/guides/setup-issue-12.md +0 -0
  244. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/index.md +0 -0
  245. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/quick-start.md +0 -0
  246. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/reference/cloud-run-quick-reference.md +0 -0
  247. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/reference/json-output-format.md +0 -0
  248. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/reference/json-structure-comparison.md +0 -0
  249. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/reference/parameters.md +0 -0
  250. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/reference/pose-systems.md +0 -0
  251. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
  252. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/paper-downloader/README.md +0 -0
  253. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/paper-downloader/dois.txt +0 -0
  254. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/paper-downloader/pyproject.toml +0 -0
  255. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/paper-downloader/uv.lock +0 -0
  256. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
  257. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
  258. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/README.md +0 -0
  259. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/convert_pdfs.py +0 -0
  260. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
  261. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
  262. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
  263. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
  264. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
  265. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
  266. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
  267. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
  268. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
  269. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
  270. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
  271. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
  272. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
  273. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
  274. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
  275. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
  276. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
  277. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
  278. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
  279. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
  280. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
  281. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
  282. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
  283. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
  284. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
  285. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
  286. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
  287. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
  288. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
  289. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
  290. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
  291. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
  292. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
  293. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
  294. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
  295. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
  296. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
  297. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
  298. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
  299. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
  300. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
  301. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/online-references-for-papers.md +0 -0
  302. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
  303. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
  304. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
  305. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
  306. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
  307. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
  308. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
  309. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
  310. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
  311. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
  312. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
  313. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
  314. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
  315. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
  316. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
  317. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
  318. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
  319. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
  320. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
  321. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
  322. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
  323. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
  324. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
  325. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
  326. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
  327. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
  328. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
  329. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
  330. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
  331. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
  332. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
  333. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
  334. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
  335. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
  336. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
  337. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
  338. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
  339. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
  340. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
  341. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
  342. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
  343. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/1-STRATEGIC_SUMMARY.md +0 -0
  344. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/2-STRATEGIC_ANALYSIS.md +0 -0
  345. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/MVP_FEEDBACK_COLLECTION.md +0 -0
  346. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/MVP_VALIDATION_CHECKPOINTS.md +0 -0
  347. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/README.md +0 -0
  348. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/STYLE_GUIDE.md +0 -0
  349. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/01-executive-summary.md +0 -0
  350. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/02-technical-assessment.md +0 -0
  351. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/03-refactoring-roadmap.md +0 -0
  352. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/README.md +0 -0
  353. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BIOMECHANICS/01-executive-summary.md +0 -0
  354. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BIOMECHANICS/02-technical-assessment.md +0 -0
  355. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BIOMECHANICS/03-reference-guide.md +0 -0
  356. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/BIOMECHANICS/README.md +0 -0
  357. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/COMPUTER_VISION/01-executive-summary.md +0 -0
  358. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/COMPUTER_VISION/02-real-time-architecture.md +0 -0
  359. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/COMPUTER_VISION/03-implementation-checklist.md +0 -0
  360. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/COMPUTER_VISION/README.md +0 -0
  361. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/01-agent-consensus.md +0 -0
  362. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/02-critical-findings.md +0 -0
  363. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/03-roadmap-adjustments.md +0 -0
  364. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/04-decision-points.md +0 -0
  365. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/README.md +0 -0
  366. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/risk-register.md +0 -0
  367. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/CONSOLIDATED/timeline-roadmap.md +0 -0
  368. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/DEVOPS_CI_CD/01-executive-summary.md +0 -0
  369. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/DEVOPS_CI_CD/02-infrastructure-assessment.md +0 -0
  370. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/DEVOPS_CI_CD/03-implementation-roadmap.md +0 -0
  371. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/DEVOPS_CI_CD/README.md +0 -0
  372. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/01-executive-summary.md +0 -0
  373. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/02-technical-assessment.md +0 -0
  374. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/03-parameter-specifications.md +0 -0
  375. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/README.md +0 -0
  376. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/QA_TESTING/01-executive-summary.md +0 -0
  377. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/QA_TESTING/02-roadmap-assessment.md +0 -0
  378. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/QA_TESTING/03-testing-checklists.md +0 -0
  379. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/QA_TESTING/README.md +0 -0
  380. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/TECHNICAL_WRITING/01-executive-summary.md +0 -0
  381. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/TECHNICAL_WRITING/02-documentation-strategy.md +0 -0
  382. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/TECHNICAL_WRITING/03-action-plan.md +0 -0
  383. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/strategy/agent-assessments/TECHNICAL_WRITING/README.md +0 -0
  384. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/technical/framerate.md +0 -0
  385. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/technical/implementation-details.md +0 -0
  386. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/technical/imu-metadata.md +0 -0
  387. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/technical/real-time-analysis.md +0 -0
  388. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/technical/triple-extension.md +0 -0
  389. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/translations/es/camera-setup.md +0 -0
  390. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/validation/determinism-test.md +0 -0
  391. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/validation/known-height-validation.md +0 -0
  392. {kinemotion-0.33.2 → kinemotion-0.35.0}/docs/validation-status.md +0 -0
  393. {kinemotion-0.33.2 → kinemotion-0.35.0}/examples/bulk/README.md +0 -0
  394. {kinemotion-0.33.2 → kinemotion-0.35.0}/examples/programmatic_usage.py +0 -0
  395. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/.editorconfig +0 -0
  396. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/.env.example +0 -0
  397. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/.gitattributes +0 -0
  398. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/.gitignore +0 -0
  399. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/.yarn/releases/yarn-4.12.0.cjs +0 -0
  400. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/.yarnrc.yml +0 -0
  401. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/README.md +0 -0
  402. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/index.html +0 -0
  403. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/ErrorBoundary.tsx +0 -0
  404. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/ErrorDisplay.tsx +0 -0
  405. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/LoadingSpinner.tsx +0 -0
  406. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/RecentUploads.tsx +0 -0
  407. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/ResultsDisplay.tsx +0 -0
  408. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/ResultsSkeleton.tsx +0 -0
  409. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/components/UploadForm.tsx +0 -0
  410. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/hooks/useRecentUploads.ts +0 -0
  411. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/main.tsx +0 -0
  412. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/types/api.ts +0 -0
  413. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/src/vite-env.d.ts +0 -0
  414. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/vercel.json +0 -0
  415. {kinemotion-0.33.2 → kinemotion-0.35.0}/frontend/vite.config.ts +0 -0
  416. {kinemotion-0.33.2 → kinemotion-0.35.0}/justfile +0 -0
  417. {kinemotion-0.33.2 → kinemotion-0.35.0}/local_dev.sh +0 -0
  418. {kinemotion-0.33.2 → kinemotion-0.35.0}/mkdocs.yml +0 -0
  419. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/.gitignore +0 -0
  420. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/README.md +0 -0
  421. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/demos/.gitignore +0 -0
  422. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/demos/README.md +0 -0
  423. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/demos/api_demo.ipynb +0 -0
  424. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/demos/batch_processing_demo.py +0 -0
  425. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/demos/sample_data/.gitkeep +0 -0
  426. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/presentation_guide.md +0 -0
  427. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/revealjs/.gitignore +0 -0
  428. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/revealjs/Makefile +0 -0
  429. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/revealjs/README.md +0 -0
  430. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/revealjs/slides.md +0 -0
  431. {kinemotion-0.33.2 → kinemotion-0.35.0}/presentation/speaker_script.md +0 -0
  432. {kinemotion-0.33.2 → kinemotion-0.35.0}/requirements-docs.txt +0 -0
  433. {kinemotion-0.33.2 → kinemotion-0.35.0}/samples/cmjs/README.md +0 -0
  434. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/SCRIPTS_QUICKREF.md +0 -0
  435. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/analyze_determinism_variance.py +0 -0
  436. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/basic-memory-utils.sh +0 -0
  437. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/generate_test_data.py +0 -0
  438. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/plot_validation_results.py +0 -0
  439. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/README.md +0 -0
  440. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/add-issue.sh +0 -0
  441. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/batch-set-fields.sh +0 -0
  442. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/helpers.sh +0 -0
  443. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/list.sh +0 -0
  444. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/set-field.sh +0 -0
  445. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/set-status.sh +0 -0
  446. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project/summary.sh +0 -0
  447. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/project.sh +0 -0
  448. {kinemotion-0.33.2 → kinemotion-0.35.0}/scripts/test_determinism.sh +0 -0
  449. {kinemotion-0.33.2 → kinemotion-0.35.0}/sonar-project.properties +0 -0
  450. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/__init__.py +0 -0
  451. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cli.py +0 -0
  452. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cmj/__init__.py +0 -0
  453. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cmj/cli.py +0 -0
  454. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cmj/debug_overlay.py +0 -0
  455. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cmj/joint_angles.py +0 -0
  456. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/cmj/kinematics.py +0 -0
  457. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/__init__.py +0 -0
  458. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/auto_tuning.py +0 -0
  459. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/debug_overlay_utils.py +0 -0
  460. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/formatting.py +0 -0
  461. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/metadata.py +0 -0
  462. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/pose.py +0 -0
  463. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/quality.py +0 -0
  464. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/core/video_io.py +0 -0
  465. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/dropjump/cli.py +0 -0
  466. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/dropjump/debug_overlay.py +0 -0
  467. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/dropjump/kinematics.py +0 -0
  468. {kinemotion-0.33.2 → kinemotion-0.35.0}/src/kinemotion/py.typed +0 -0
  469. {kinemotion-0.33.2 → kinemotion-0.35.0}/tests/__init__.py +0 -0
  470. /kinemotion-0.33.2/tests/test_cli_imports.py → /kinemotion-0.35.0/tests/cli/test_imports.py +0 -0
  471. /kinemotion-0.33.2/tests/test_cmj_joint_angles.py → /kinemotion-0.35.0/tests/cmj/test_joint_angles.py +0 -0
  472. {kinemotion-0.33.2/tests → kinemotion-0.35.0/tests/core}/test_filtering.py +0 -0
  473. {kinemotion-0.33.2/tests → kinemotion-0.35.0/tests/core}/test_formatting.py +0 -0
  474. {kinemotion-0.33.2 → kinemotion-0.35.0}/tests/core/test_quality.py +0 -0
  475. {kinemotion-0.33.2/tests → kinemotion-0.35.0/tests/dropjump}/test_adaptive_threshold.py +0 -0
  476. {kinemotion-0.33.2/tests → kinemotion-0.35.0/tests/dropjump}/test_contact_detection.py +0 -0
@@ -0,0 +1,428 @@
1
+ ---
2
+ title: Supabase Authentication Setup Guide
3
+ type: note
4
+ permalink: api/supabase-authentication-setup-guide-1
5
+ tags:
6
+ - '[''supabase'''
7
+ - '''authentication'''
8
+ - '''setup'''
9
+ - '''api'''
10
+ - '''documentation'']'
11
+ ---
12
+
13
+ # Supabase Authentication Setup Guide
14
+
15
+ ## Overview
16
+
17
+ Kinemotion now uses Supabase for authentication, providing secure user management with JWT tokens.
18
+
19
+ **What's Included:**
20
+ - ✅ Email/password authentication
21
+ - ✅ JWT token validation in backend (RS256 + Auth server fallback)
22
+ - ✅ Automatic user ID logging in all requests
23
+ - ✅ Protected API endpoints
24
+ - ✅ Works with `kinemotion.vercel.app` domain
25
+
26
+ ---
27
+
28
+ ## Important: JWT Signing Keys (Modern Approach)
29
+
30
+ Supabase now uses **asymmetric JWT signing keys** (ES256/RS256) as the modern standard:
31
+
32
+ | Type | Algorithm | Status | Verification Method |
33
+ |------|-----------|--------|---------------------|
34
+ | **Asymmetric** (modern) | ES256/RS256 | ✅ **Recommended** | JWKS endpoint |
35
+ | **Symmetric** (legacy) | HS256 | ⚠️ Deprecated | Auth server fallback |
36
+
37
+ **Our backend supports both automatically:**
38
+ 1. Tries asymmetric verification via JWKS endpoint first (modern)
39
+ 2. Falls back to Auth server verification if JWKS is empty (legacy compatibility)
40
+
41
+ **To use the modern approach:**
42
+ 1. Supabase Dashboard → **Settings** → **JWT signing keys**
43
+ 2. Click **"Migrate JWT secret"** if you see it
44
+ 3. Then click **"Rotate keys"** to start using ES256
45
+
46
+ > **Why ES256?** Faster verification, better security (public/private keys can't be forged), easier compliance (SOC2, HIPAA), and automatic key revocation via JWKS.
47
+
48
+ ---
49
+
50
+ ## Step 1: Create Supabase Project
51
+
52
+ 1. Go to [database.new](https://database.new) (official Supabase project creation URL)
53
+ 2. Sign in or create a Supabase account
54
+ 3. Create a new organization (if needed)
55
+ 4. Fill in project details:
56
+ - **Project name:** `kinemotion`
57
+ - **Database password:** (click "Generate a password" for a strong password)
58
+ - **Region:** Choose closest to your users (e.g., `us-east-1`)
59
+ - **Plan:** Free (50,000 MAUs included)
60
+ 5. Click **Create new project**
61
+ 6. Wait for project to be created (~2 minutes)
62
+
63
+ > **Note:** New projects (created July 2025+) automatically use ES256 (asymmetric) signing keys. If you have an existing project with legacy JWT secret, migrate it: **Settings** → **JWT signing keys** → **Migrate JWT secret**.
64
+
65
+ ---
66
+
67
+ ## Step 2: Get Supabase Credentials
68
+
69
+ Once your project is ready:
70
+
71
+ 1. Go to **Settings** (gear icon in sidebar)
72
+ 2. Click **API Keys** in the left menu
73
+ 3. Copy the following:
74
+
75
+ | Credential | Location | Description |
76
+ |------------|----------|-------------|
77
+ | **Project URL** | Top of API Keys page | `https://xxx.supabase.co` |
78
+ | **Publishable key** | Under "Publishable key" | Safe for frontend (starts with `sb_publishable_...`) |
79
+ | **Secret key** | Under "Secret keys" | Server-side only (starts with `sb_secret_...`) |
80
+
81
+ > **Key Format Change (2025):** New projects use the `sb_publishable_xxx` format. Legacy projects may still show JWT-style keys starting with `eyJ...`. Both formats work the same way.
82
+
83
+ ---
84
+
85
+ ## Step 3: Configure Authentication Settings
86
+
87
+ ### URL Configuration
88
+
89
+ 1. In Supabase dashboard, click **Authentication** in sidebar
90
+ 2. Click **URL Configuration** in the left menu
91
+ 3. Configure the following:
92
+
93
+ | Setting | Value | Purpose |
94
+ |---------|-------|---------|
95
+ | **Site URL** | `https://kinemotion.vercel.app` | Default redirect after auth |
96
+ | **Redirect URLs** | `https://kinemotion.vercel.app/**` | Production redirects |
97
+ | | `http://localhost:5173/**` | Local development |
98
+
99
+ > **Tip:** Use `/**` wildcard to allow all paths under your domain.
100
+
101
+ ### Email Provider
102
+
103
+ 1. Click **Providers** in the left menu
104
+ 2. **Email** provider is enabled by default
105
+ 3. *(Optional)* Configure email templates under **Email Templates**
106
+
107
+ ### Social Providers (Optional)
108
+
109
+ 1. Under **Providers**, enable Google, GitHub, etc.
110
+ 2. Follow the setup instructions for each provider
111
+
112
+ ---
113
+
114
+ ## Step 4: Frontend Environment Variables
115
+
116
+ ### Development (.env.local)
117
+
118
+ Create `frontend/.env.local`:
119
+
120
+ ```bash
121
+ VITE_SUPABASE_URL=https://your-project-id.supabase.co
122
+ VITE_SUPABASE_ANON_KEY=sb_publishable_xxxxxxxxxxxxxxxxxxxxx
123
+ VITE_API_URL=http://localhost:8000
124
+ ```
125
+
126
+ > **Note:** New projects use `sb_publishable_xxx` format. Legacy projects may have JWT-style keys (`eyJ...`). Both formats work.
127
+
128
+ ### Production (Vercel)
129
+
130
+ Add environment variables in Vercel dashboard:
131
+
132
+ 1. Go to your project on [vercel.com](https://vercel.com)
133
+ 2. Click **Settings** → **Environment Variables**
134
+ 3. Add the following:
135
+
136
+ | Variable | Value | Environment |
137
+ |----------|-------|-------------|
138
+ | `VITE_SUPABASE_URL` | `https://xxx.supabase.co` | Production |
139
+ | `VITE_SUPABASE_ANON_KEY` | Your publishable key | Production |
140
+ | `VITE_API_URL` | `https://kinemotion-backend-xxx.run.app` | Production |
141
+
142
+ 4. Click **Save** for each variable
143
+
144
+ ---
145
+
146
+ ## Step 5: Backend Environment Variables
147
+
148
+ ### Development (.env)
149
+
150
+ Create `backend/.env`:
151
+
152
+ ```bash
153
+ # Required
154
+ SUPABASE_URL=https://your-project.supabase.co
155
+
156
+ # Optional (for Auth server fallback verification)
157
+ SUPABASE_ANON_KEY=sb_publishable_xxxxxxxxxxxxxxxxxxxxx
158
+
159
+ # Logging
160
+ LOG_LEVEL=INFO
161
+ JSON_LOGS=false
162
+ ```
163
+
164
+ **Environment Variables Explained:**
165
+
166
+ | Variable | Required | Description |
167
+ |----------|----------|-------------|
168
+ | `SUPABASE_URL` | Yes | Your project URL (e.g., `https://xxx.supabase.co`) |
169
+ | `SUPABASE_ANON_KEY` | No | Anon/public key for Auth server fallback |
170
+
171
+ > **Note:** JWT secret is NOT needed for new RS256 projects. The backend verifies tokens via the public JWKS endpoint (`/.well-known/jwks.json`).
172
+
173
+ ### Production (Cloud Run)
174
+
175
+ **Step 1: Create secrets in Google Cloud**
176
+
177
+ ```bash
178
+ # Set Supabase URL secret (required)
179
+ echo -n "https://your-project-id.supabase.co" | \
180
+ gcloud secrets create SUPABASE_URL \
181
+ --data-file=- \
182
+ --project=kinemotion-backend
183
+
184
+ # Set Anon key secret (optional, for Auth server fallback)
185
+ echo -n "sb_publishable_xxxxxxxxxxxxxxxxxxxxx" | \
186
+ gcloud secrets create SUPABASE_ANON_KEY \
187
+ --data-file=- \
188
+ --project=kinemotion-backend
189
+
190
+ # Grant Cloud Run service account access to secrets
191
+ gcloud secrets add-iam-policy-binding SUPABASE_URL \
192
+ --member="serviceAccount:github-actions-deploy@kinemotion-backend.iam.gserviceaccount.com" \
193
+ --role="roles/secretmanager.secretAccessor" \
194
+ --project=kinemotion-backend
195
+
196
+ gcloud secrets add-iam-policy-binding SUPABASE_ANON_KEY \
197
+ --member="serviceAccount:github-actions-deploy@kinemotion-backend.iam.gserviceaccount.com" \
198
+ --role="roles/secretmanager.secretAccessor" \
199
+ --project=kinemotion-backend
200
+ ```
201
+
202
+ **Step 2: Update `.github/workflows/deploy-backend.yml`**
203
+
204
+ Find the "Deploy to Cloud Run" step and update the `flags` section:
205
+
206
+ ```yaml
207
+ - name: Deploy to Cloud Run
208
+ uses: google-github-actions/deploy-cloudrun@v3
209
+ with:
210
+ service: ${{ env.SERVICE_NAME }}
211
+ region: ${{ env.GCP_REGION }}
212
+ image: ${{ env.REGISTRY }}/${{ env.GCP_PROJECT_ID }}/${{ env.SERVICE_NAME }}:${{ github.sha }}
213
+ flags: |
214
+ --memory=2Gi
215
+ --allow-unauthenticated
216
+ --set-env-vars=CORS_ORIGINS=https://kinemotion.vercel.app,JSON_LOGS=true,LOG_LEVEL=INFO
217
+ --set-secrets=SUPABASE_URL=SUPABASE_URL:latest,SUPABASE_ANON_KEY=SUPABASE_ANON_KEY:latest
218
+ ```
219
+
220
+ ---
221
+
222
+ ## Step 6: Test Locally
223
+
224
+ ### Start Backend
225
+
226
+ ```bash
227
+ cd backend
228
+ source .env # Load environment variables
229
+ uv run uvicorn kinemotion_backend.app:app --reload
230
+ ```
231
+
232
+ ### Start Frontend
233
+
234
+ ```bash
235
+ cd frontend
236
+ yarn dev
237
+ ```
238
+
239
+ ### Test Authentication Flow
240
+
241
+ 1. Open `http://localhost:5173`
242
+ 2. Click "Sign Up"
243
+ 3. Enter email and password
244
+ 4. Check email for confirmation link
245
+ 5. Click confirmation link
246
+ 6. Sign in with credentials
247
+ 7. Upload a video to test authenticated API call
248
+
249
+ ---
250
+
251
+ ## Step 7: Deploy to Production
252
+
253
+ ### Deploy Backend
254
+
255
+ ```bash
256
+ git add .
257
+ git commit -m "feat: add Supabase authentication"
258
+ git push origin main
259
+ ```
260
+
261
+ GitHub Actions will automatically:
262
+ - Run tests
263
+ - Build Docker image
264
+ - Deploy to Cloud Run
265
+ - Configure with Supabase secrets
266
+
267
+ ### Deploy Frontend
268
+
269
+ ```bash
270
+ cd frontend
271
+ git push origin main
272
+ ```
273
+
274
+ Vercel will automatically:
275
+ - Build React app with Vite
276
+ - Deploy to production
277
+ - Use environment variables
278
+
279
+ ---
280
+
281
+ ## Verification
282
+
283
+ ### Check Logs (Backend)
284
+
285
+ All requests will now include user information:
286
+
287
+ ```json
288
+ {
289
+ "event": "request_started",
290
+ "request_id": "abc123...",
291
+ "user_id": "a1b2c3d4-e5f6...",
292
+ "user_email": "coach@example.com",
293
+ "method": "POST",
294
+ "path": "/api/analyze"
295
+ }
296
+ ```
297
+
298
+ ### Test API Authentication
299
+
300
+ ```bash
301
+ # Get token from browser console after sign in
302
+ # (Run in browser console: supabase.auth.getSession())
303
+
304
+ curl -X POST https://kinemotion-backend-xxx.run.app/api/analyze \
305
+ -H "Authorization: Bearer YOUR_TOKEN_HERE" \
306
+ -F "file=@video.mp4" \
307
+ -F "jump_type=cmj"
308
+ ```
309
+
310
+ ---
311
+
312
+ ## Troubleshooting
313
+
314
+ ### "Invalid token" errors
315
+
316
+ **Cause:** Token expired or verification failed
317
+
318
+ **Fix:**
319
+ 1. Tokens expire after 1 hour - sign in again
320
+ 2. Check browser console for auth errors
321
+ 3. Verify `SUPABASE_URL` is correct in backend env
322
+
323
+ ### "JWKS verification failed" in logs
324
+
325
+ **Cause:** Project uses HS256 signing (legacy)
326
+
327
+ **This is normal!** The backend automatically falls back to Auth server verification.
328
+
329
+ **Fix (optional):**
330
+ - Set `SUPABASE_ANON_KEY` for faster fallback verification
331
+ - Or migrate to asymmetric keys: Supabase Dashboard → **Settings** → **JWT signing keys** → Click "Migrate JWT secret"
332
+
333
+ ### "CORS error" from API
334
+
335
+ **Cause:** Backend not allowing frontend domain
336
+
337
+ **Fix:**
338
+ 1. Verify `CORS_ORIGINS` includes your Vercel domain
339
+ 2. Redeploy backend with correct environment variable
340
+
341
+ ### Email confirmation not working
342
+
343
+ **Cause:** Supabase email settings
344
+
345
+ **Fix:**
346
+ 1. Supabase Dashboard → Authentication → Email Templates
347
+ 2. Verify "Confirm signup" template is enabled
348
+ 3. Check spam folder for confirmation email
349
+ 4. For development, check Supabase logs for email delivery status
350
+
351
+ ### Backend not validating tokens
352
+
353
+ **Cause:** Missing `SUPABASE_URL` environment variable
354
+
355
+ **Fix:**
356
+ 1. Check Cloud Run logs: `gcloud logging read --limit 50`
357
+ 2. Look for "supabase_auth_not_configured" warning
358
+ 3. Verify `SUPABASE_URL` secret is set in Google Secret Manager
359
+ 4. Redeploy with correct secret configuration
360
+
361
+ ### Tokens verified but user info empty
362
+
363
+ **Cause:** Auth server fallback returns minimal data
364
+
365
+ **Fix:**
366
+ 1. This is normal for HS256 projects using fallback
367
+ 2. `user_id` (sub) and `email` are always extracted
368
+ 3. For full token claims, migrate to RS256 signing
369
+
370
+ ---
371
+
372
+ ## Security Notes
373
+
374
+ 1. **Never commit secrets to Git**
375
+ - Use `.env.local` (gitignored) for local development
376
+ - Use Secret Manager for production
377
+
378
+ 2. **RS256 vs HS256 Security**
379
+ - **RS256 (recommended):** Uses public/private key pairs. Public key can't forge tokens.
380
+ - **HS256 (legacy):** Uses shared secret. Anyone with the secret can forge tokens.
381
+ - Supabase recommends RS256 for all new projects.
382
+
383
+ 3. **Rate limiting**
384
+ - Backend has rate limiting (3 requests/minute per IP)
385
+ - Supabase free tier: 50,000 MAUs
386
+
387
+ 4. **User data**
388
+ - User emails are logged (for audit trail)
389
+ - Consider privacy regulations (GDPR, CCPA)
390
+ - Add privacy policy if collecting user data
391
+
392
+ 5. **Token verification**
393
+ - Tokens are verified via Supabase JWKS endpoint (RS256)
394
+ - Fallback to Auth server verification (HS256)
395
+ - Never verify tokens using JWT secret directly (deprecated)
396
+
397
+ ---
398
+
399
+ ## Free Tier Limits
400
+
401
+ **Supabase Free Tier:**
402
+ - ✅ 50,000 monthly active users
403
+ - ✅ 500 MB database storage
404
+ - ✅ 2 GB bandwidth
405
+ - ✅ Unlimited API requests
406
+ - ✅ Social OAuth providers
407
+
408
+ **Cost after free tier:**
409
+ - Pro plan: $25/month (includes 100,000 MAUs)
410
+ - Additional MAUs: $0.00325 per MAU
411
+
412
+ ---
413
+
414
+ ## Next Steps
415
+
416
+ - [ ] Add email templates customization
417
+ - [ ] Enable password reset flow
418
+ - [ ] Add social OAuth (Google, GitHub)
419
+ - [ ] Implement role-based access control
420
+ - [ ] Add user profile management
421
+
422
+ ---
423
+
424
+ ## Support
425
+
426
+ - **Supabase Docs:** https://supabase.com/docs
427
+ - **Supabase Community:** https://github.com/supabase/supabase/discussions
428
+ - **Kinemotion Issues:** https://github.com/feniix/kinemotion/issues
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: Auth Provider Comparison December 2025
3
+ type: note
4
+ permalink: authentication/auth-provider-comparison-december-2025-1
5
+ tags:
6
+ - authentication
7
+ - comparison
8
+ - supabase
9
+ - clerk
10
+ - pricing
11
+ ---
12
+
13
+ ## Auth Provider Comparison (December 2025)
14
+
15
+ ### Chosen: Supabase
16
+
17
+ **Why:**
18
+ - 50,000 MAUs free tier (vs Clerk 10K)
19
+ - Works with `kinemotion.vercel.app` (Clerk requires custom domain)
20
+ - $0.00325/MAU after free tier (cheapest)
21
+ - Open source, includes Postgres
22
+ - Excellent Python/FastAPI support
23
+
24
+ ### Clerk (Not Chosen)
25
+ **Reason**: Doesn't allow `*.vercel.app` domains for production
26
+ - Free: 10,000 MAUs
27
+ - Paid: $25/month + $0.02/MAU
28
+ - Best DX, fastest setup
29
+ - Native Vercel integration
30
+
31
+ ### Auth0 (Not Recommended)
32
+ **Reason**: Too expensive
33
+ - Free: 25,000 MAUs
34
+ - Paid: $35/month + $0.07/MAU (10K users = $700/month!)
35
+
36
+ ### Firebase Auth
37
+ - Free: 50,000 MAUs
38
+ - Cons: Google lock-in, phone auth costs extra
39
+
40
+ ### Cost Projection (Supabase)
41
+ - 0-50K MAUs: $0/month
42
+ - 100 videos/day ≈ 1-2K MAUs/month
43
+ - **Well within free tier**
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: Auth Providers Comparison December 2025
3
+ type: note
4
+ permalink: authentication/auth-providers-comparison-december-2025-1
5
+ tags:
6
+ - authentication
7
+ - comparison
8
+ - supabase
9
+ - clerk
10
+ - auth0
11
+ ---
12
+
13
+ [{"text": "# Third-Party Auth Providers Comparison (December 2025)\n\n## For Kinemotion (Vercel + Cloud Run)\n\n| Provider | Free MAUs | Vercel | Backend | Best For |\n|----------|-----------|--------|---------|----------|\n| **Clerk** | 10,000 | \u2b50 Native | \u2705 Excellent | MVP Speed |\n| **Supabase** | 50,000 | \u2705 Good | \u2705 Excellent | Long-term Cost |\n| **Auth0** | 25,000 | \u2705 Good | \u2705 Excellent | Enterprise |\n| **Firebase** | 50,000 | \u2705 Good | \u2705 Good | Google ecosystem |\n\n## Decision: Supabase (Chosen)\n\n**Why Supabase:**\n- \u2705 Most generous free tier (50K MAUs)\n- \u2705 Works with `kinemotion.vercel.app` (Clerk doesn't)\n- \u2705 Open source (can self-host)\n- \u2705 Includes Postgres database\n- \u2705 Cheapest long-term ($0.00325/MAU)\n\n## Clerk (Not Chosen - Domain Restriction)\n\n**Clerk Issue (December 2025):**\n- Does NOT allow `*.vercel.app` domains for production\n- Requires custom domain\n- Otherwise: fastest setup, best DX\n\n**Free Tier:** 10,000 MAUs\n**Paid:** $25/month + $0.02/MAU over 10K\n\n## Auth0 (Not Recommended - Expensive)\n\n**Free Tier:** 25,000 MAUs\n**Paid:** $35/month for 500 MAUs, then $0.07/MAU\n**Example:** 10K users = $700/month \ud83d\ude31\n\n## Firebase Auth\n\n**Free Tier:** 50,000 MAUs (email/password/social)\n**Cons:** Google lock-in, phone auth costs extra\n\n## Cost Projection for Kinemotion\n\n**Supabase Pricing:**\n- 0-50K MAUs: $0/month\n- 50K-100K MAUs: $25/month (Pro plan)\n- 100K+ MAUs: $25 + ($0.00325 per additional MAU)\n\n**Estimated usage:**\n- 100 videos/day \u2248 1,000-2,000 MAUs/month\n- **Cost: $0** (well within free tier)\n\n## Implementation Status\n\n\u2705 **Supabase fully integrated** (December 2025)\n- Frontend: React + @supabase/supabase-js\n- Backend: FastAPI + JWT validation\n- Deployment: Vercel + Cloud Run\n- Logging: User ID in all requests", "type": "text"}]
@@ -0,0 +1,88 @@
1
+ ---
2
+ title: Supabase Authentication Quick Start
3
+ type: note
4
+ permalink: authentication/supabase-authentication-quick-start-1
5
+ tags:
6
+ - supabase
7
+ - authentication
8
+ - quickstart
9
+ - implementation
10
+ ---
11
+
12
+ # Supabase Authentication - Quick Start
13
+
14
+ ## ✅ Implementation Complete!
15
+
16
+ Supabase authentication has been fully integrated with both frontend and backend.
17
+
18
+ ## What Was Implemented
19
+
20
+ ### Frontend (React + Vite)
21
+ - ✅ Supabase client configuration (`src/lib/supabase.ts`)
22
+ - ✅ Authentication hook (`src/hooks/useAuth.ts`)
23
+ - ✅ Sign in/sign up component (`src/components/Auth.tsx`)
24
+ - ✅ Updated App.tsx with auth flow
25
+ - ✅ Auth token sent to backend in API requests
26
+ - ✅ CSS styling for auth UI
27
+
28
+ ### Backend (FastAPI + Cloud Run)
29
+ - ✅ Supabase JWT validation (`src/kinemotion_backend/auth.py`)
30
+ - ✅ ES256/RS256 verification via JWKS endpoint (modern)
31
+ - ✅ Automatic fallback to Auth server for HS256 projects (legacy)
32
+ - ✅ Middleware extracts user ID from tokens (`middleware.py`)
33
+ - ✅ User ID automatically logged in all requests
34
+ - ✅ User email logged for audit trail
35
+
36
+ ## Quick Setup Steps
37
+
38
+ ### 1. Create Supabase Project
39
+ - Go to [database.new](https://database.new)
40
+ - Name: `kinemotion`, Region: closest, Plan: Free (50K MAUs)
41
+
42
+ ### 2. Get Credentials
43
+ - Dashboard → Settings → API Keys
44
+ - Copy: Project URL + Publishable key (`sb_publishable_xxx`)
45
+
46
+ ### 3. Configure Authentication
47
+ - Dashboard → Authentication → URL Configuration
48
+ - Site URL: `https://kinemotion.vercel.app`
49
+ - Redirect URLs: `https://kinemotion.vercel.app/**`, `http://localhost:5173/**`
50
+
51
+ ### 4. Environment Variables
52
+
53
+ **Frontend (.env.local):**
54
+ ```
55
+ VITE_SUPABASE_URL=https://project.supabase.co
56
+ VITE_SUPABASE_ANON_KEY=sb_publishable_xxx
57
+ VITE_API_URL=http://localhost:8000
58
+ ```
59
+
60
+ **Backend (.env):**
61
+ ```
62
+ SUPABASE_URL=https://project.supabase.co
63
+ SUPABASE_ANON_KEY=sb_publishable_xxx
64
+ LOG_LEVEL=INFO
65
+ JSON_LOGS=false
66
+ ```
67
+
68
+ ### 5. Production Deployment
69
+
70
+ **Google Cloud Secrets:**
71
+ ```bash
72
+ ./scripts/setup-supabase-production.sh
73
+ ```
74
+
75
+ **Vercel Environment Variables:**
76
+ Add VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY, VITE_API_URL
77
+
78
+ ## Testing Results
79
+ - ✅ All 85 backend tests pass
80
+ - ✅ 0 type errors (pyright strict)
81
+ - ✅ 0 linting errors (ruff)
82
+ - ✅ Frontend type checking passes
83
+
84
+ ## Files Changed
85
+ **Frontend:** package.json, src/lib/supabase.ts, src/hooks/useAuth.ts, src/components/Auth.tsx, src/App.tsx, src/index.css
86
+ **Backend:** pyproject.toml, src/kinemotion_backend/auth.py, src/kinemotion_backend/middleware.py
87
+
88
+ ## Free Tier: 50,000 MAUs/month (well within capacity)
@@ -0,0 +1,110 @@
1
+ ---
2
+ title: Supabase Authentication Setup Guide
3
+ type: note
4
+ permalink: authentication/supabase-authentication-setup-guide-1
5
+ tags:
6
+ - supabase
7
+ - authentication
8
+ - setup-guide
9
+ - production
10
+ ---
11
+
12
+ # Supabase Authentication Setup Guide
13
+
14
+ ## Overview
15
+ Kinemotion uses Supabase for authentication with JWT token validation, automatic user ID logging, and protected API endpoints.
16
+
17
+ ## Modern Approach (December 2025)
18
+
19
+ **JWT Signing Keys:**
20
+ - **Modern**: ES256/RS256 (asymmetric) - JWKS endpoint verification
21
+ - **Legacy**: HS256 (symmetric) - Auth server fallback
22
+
23
+ **Backend support:** Tries JWKS first, falls back to Auth server automatically.
24
+
25
+ ## Step 1: Create Supabase Project
26
+
27
+ 1. Go to [database.new](https://database.new)
28
+ 2. Fill in: Name (kinemotion), Password (generate), Region (us-east-1), Plan (Free)
29
+ 3. Click "Create new project"
30
+ 4. Wait ~2 minutes
31
+
32
+ **Note:** New projects (July 2025+) use ES256 automatically. Legacy projects: migrate via Settings → JWT signing keys → "Migrate JWT secret".
33
+
34
+ ## Step 2: Get Credentials
35
+
36
+ Dashboard → Settings → API Keys:
37
+ - **Project URL**: `https://xxx.supabase.co`
38
+ - **Publishable key**: `sb_publishable_xxx...` (safe for frontend)
39
+ - **Secret key**: `sb_secret_xxx...` (server-side only)
40
+
41
+ **Key format change (2025):** New format is `sb_publishable_xxx`, legacy is JWT-style `eyJ...`.
42
+
43
+ ## Step 3: Configure Authentication
44
+
45
+ ### URL Configuration
46
+ - Path: Authentication → URL Configuration
47
+ - Site URL: `https://kinemotion.vercel.app`
48
+ - Redirect URLs: `https://kinemotion.vercel.app/**`, `http://localhost:5173/**`
49
+
50
+ ### Email Provider
51
+ - Path: Authentication → Providers
52
+ - Email is enabled by default
53
+
54
+ ## Step 4: Frontend Environment Variables
55
+
56
+ **Development (.env.local):**
57
+ ```
58
+ VITE_SUPABASE_URL=https://project-id.supabase.co
59
+ VITE_SUPABASE_ANON_KEY=sb_publishable_xxx
60
+ VITE_API_URL=http://localhost:8000
61
+ ```
62
+
63
+ **Production (Vercel):**
64
+ Add same variables via Settings → Environment Variables
65
+
66
+ ## Step 5: Backend Environment Variables
67
+
68
+ **Development (.env):**
69
+ ```
70
+ SUPABASE_URL=https://project-id.supabase.co
71
+ SUPABASE_ANON_KEY=sb_publishable_xxx # Optional, for Auth server fallback
72
+ LOG_LEVEL=INFO
73
+ JSON_LOGS=false
74
+ ```
75
+
76
+ **Production (Cloud Run):**
77
+ 1. Create secrets in Google Secret Manager
78
+ 2. Grant IAM access to service account
79
+ 3. Update deploy-backend.yml with --set-secrets flag
80
+
81
+ See full commands in detailed guide.
82
+
83
+ ## Testing Locally
84
+
85
+ ```bash
86
+ # Backend
87
+ cd backend && uv run uvicorn kinemotion_backend.app:app --reload
88
+
89
+ # Frontend
90
+ cd frontend && yarn dev
91
+ ```
92
+
93
+ Open http://localhost:5173 → Sign up → Confirm email → Sign in → Upload video
94
+
95
+ ## Verification
96
+ Logs show: `user_id`, `user_email`, `request_id` in all requests
97
+
98
+ ## Troubleshooting
99
+ - Invalid token: Re-sign in (tokens expire after 1 hour)
100
+ - JWKS failed: Normal for HS256, backend uses fallback
101
+ - CORS error: Check CORS_ORIGINS includes Vercel domain
102
+
103
+ ## Security
104
+ - ES256: Public/private keys (can't forge tokens)
105
+ - HS256: Shared secret (anyone with it can forge) - deprecated
106
+ - Never commit .env files
107
+ - Use Secret Manager for production
108
+
109
+ ## Free Tier: 50,000 MAUs/month
110
+ Pro: $25/month (100K MAUs), Additional: $0.00325/MAU