diff --git a/apps/admin/data/fitai.db b/apps/admin/data/fitai.db
index d9191b2..544bfbb 100644
Binary files a/apps/admin/data/fitai.db and b/apps/admin/data/fitai.db differ
diff --git a/apps/admin/next-env.d.ts b/apps/admin/next-env.d.ts
index c4b7818..9edff1c 100644
--- a/apps/admin/next-env.d.ts
+++ b/apps/admin/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./.next/dev/types/routes.d.ts";
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/mobile/app.json b/apps/mobile/app.json
index 488c394..97a9138 100644
--- a/apps/mobile/app.json
+++ b/apps/mobile/app.json
@@ -27,8 +27,9 @@
"favicon": "./assets/favicon.png"
},
"plugins": [
- "expo-router"
+ "expo-router",
+ "expo-font"
],
"scheme": "fitai"
}
-}
\ No newline at end of file
+}
diff --git a/apps/mobile/package-lock.json b/apps/mobile/package-lock.json
index 26f267f..903d7ae 100644
--- a/apps/mobile/package-lock.json
+++ b/apps/mobile/package-lock.json
@@ -11,7 +11,7 @@
"@clerk/clerk-expo": "^2.18.3",
"@expo/vector-icons": "^15.0.0",
"@hookform/resolvers": "^3.3.0",
- "@react-native-picker/picker": "^2.11.4",
+ "@react-native-picker/picker": "2.11.1",
"@tanstack/react-query": "^5.0.0",
"ajv": "^8.12.0",
"ajv-keywords": "^5.1.0",
@@ -21,6 +21,7 @@
"expo-camera": "~17.0.0",
"expo-constants": "^18.0.10",
"expo-crypto": "^15.0.7",
+ "expo-font": "~14.0.9",
"expo-linking": "~8.0.0",
"expo-notifications": "~0.32.0",
"expo-router": "~6.0.14",
@@ -28,7 +29,7 @@
"expo-status-bar": "^3.0.8",
"expo-web-browser": "^15.0.9",
"react": "19.1.0",
- "react-dom": "^19.2.0",
+ "react-dom": "19.1.0",
"react-hook-form": "^7.47.0",
"react-native": "0.81.5",
"react-native-safe-area-context": "~5.6.0",
@@ -39,7 +40,6 @@
"devDependencies": {
"@babel/core": "^7.20.0",
"@testing-library/react-native": "^12.4.0",
- "@types/react": "~19.1.10",
"@types/react-native": "^0.73.0",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
@@ -4029,9 +4029,9 @@
}
},
"node_modules/@react-native-picker/picker": {
- "version": "2.11.4",
- "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.4.tgz",
- "integrity": "sha512-Kf8h1AMnBo54b1fdiVylP2P/iFcZqzpMYcglC28EEFB1DEnOjsNr6Ucqc+3R9e91vHxEDnhZFbYDmAe79P2gjA==",
+ "version": "2.11.1",
+ "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.1.tgz",
+ "integrity": "sha512-ThklnkK4fV3yynnIIRBkxxjxR4IFbdMNJVF6tlLdOJ/zEFUEFUEdXY0KmH0iYzMwY8W4/InWsLiA7AkpAbnexA==",
"license": "MIT",
"workspaces": [
"example"
@@ -4624,16 +4624,6 @@
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
"license": "MIT"
},
- "node_modules/@types/react": {
- "version": "19.1.17",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.17.tgz",
- "integrity": "sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "csstype": "^3.0.2"
- }
- },
"node_modules/@types/react-native": {
"version": "0.73.0",
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.73.0.tgz",
@@ -6946,9 +6936,9 @@
}
},
"node_modules/expo": {
- "version": "54.0.23",
- "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.23.tgz",
- "integrity": "sha512-b4uQoiRwQ6nwqsT2709RS15CWYNGF3eJtyr1KyLw9WuMAK7u4jjofkhRiO0+3o1C2NbV+WooyYTOZGubQQMBaQ==",
+ "version": "54.0.25",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.25.tgz",
+ "integrity": "sha512-+iSeBJfHRHzNPnHMZceEXhSGw4t5bNqFyd/5xMUoGfM+39rO7F72wxiLRpBKj0M6+0GQtMaEs+eTbcCrO7XyJQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.20.0",
@@ -6962,13 +6952,13 @@
"@expo/vector-icons": "^15.0.3",
"@ungap/structured-clone": "^1.3.0",
"babel-preset-expo": "~54.0.7",
- "expo-asset": "~12.0.9",
+ "expo-asset": "~12.0.10",
"expo-constants": "~18.0.10",
- "expo-file-system": "~19.0.17",
+ "expo-file-system": "~19.0.19",
"expo-font": "~14.0.9",
"expo-keep-awake": "~15.0.7",
- "expo-modules-autolinking": "3.0.21",
- "expo-modules-core": "3.0.25",
+ "expo-modules-autolinking": "3.0.22",
+ "expo-modules-core": "3.0.26",
"pretty-format": "^29.7.0",
"react-refresh": "^0.14.2",
"whatwg-url-without-unicode": "8.0.0-3"
@@ -7006,17 +6996,32 @@
"expo": "*"
}
},
+ "node_modules/expo-asset": {
+ "version": "12.0.10",
+ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.10.tgz",
+ "integrity": "sha512-pZyeJkoDsALh4gpCQDzTA/UCLaPH/1rjQNGubmLn/uDM27S4iYJb/YWw4+CNZOtd5bCUOhDPg5DtGQnydNFSXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@expo/image-utils": "^0.8.7",
+ "expo-constants": "~18.0.10"
+ },
+ "peerDependencies": {
+ "expo": "*",
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/expo-auth-session": {
- "version": "7.0.8",
- "resolved": "https://registry.npmjs.org/expo-auth-session/-/expo-auth-session-7.0.8.tgz",
- "integrity": "sha512-kpo2Jva+6uVjk6TmNqWAoqTnULXZaEVa9l4uf8JH32uDMt/iZQhM0fauy7Ww+y910Euhv5djCP7cPj8KWv6cmQ==",
+ "version": "7.0.9",
+ "resolved": "https://registry.npmjs.org/expo-auth-session/-/expo-auth-session-7.0.9.tgz",
+ "integrity": "sha512-mPSwaRWOJYas160lXi5P/7BkLy0xbh+er+IMmAYHqf2+iz2WWs9W/4lMAklQVJG2mCyOZi24XrkffvB2izCa1g==",
"license": "MIT",
"dependencies": {
"expo-application": "~7.0.7",
- "expo-constants": "~18.0.8",
+ "expo-constants": "~18.0.10",
"expo-crypto": "~15.0.7",
- "expo-linking": "~8.0.8",
- "expo-web-browser": "~15.0.7",
+ "expo-linking": "~8.0.9",
+ "expo-web-browser": "~15.0.9",
"invariant": "^2.2.4"
},
"peerDependencies": {
@@ -7070,6 +7075,16 @@
"expo": "*"
}
},
+ "node_modules/expo-file-system": {
+ "version": "19.0.19",
+ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.19.tgz",
+ "integrity": "sha512-OrpOV4fEBFMFv+jy7PnENpPbsWoBmqWGidSwh1Ai52PLl6JIInYGfZTc6kqyPNGtFTwm7Y9mSWnE8g+dtLxu7g==",
+ "license": "MIT",
+ "peerDependencies": {
+ "expo": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/expo-font": {
"version": "14.0.9",
"resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.9.tgz",
@@ -7085,12 +7100,12 @@
}
},
"node_modules/expo-linking": {
- "version": "8.0.8",
- "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.8.tgz",
- "integrity": "sha512-MyeMcbFDKhXh4sDD1EHwd0uxFQNAc6VCrwBkNvvvufUsTYFq3glTA9Y8a+x78CPpjNqwNAamu74yIaIz7IEJyg==",
+ "version": "8.0.9",
+ "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-8.0.9.tgz",
+ "integrity": "sha512-a0UHhlVyfwIbn8b1PSFPoFiIDJeps2iEq109hVH3CHd0CMKuRxFfNio9Axe2BjXhiJCYWR4OV1iIyzY/GjiVkQ==",
"license": "MIT",
"dependencies": {
- "expo-constants": "~18.0.8",
+ "expo-constants": "~18.0.10",
"invariant": "^2.2.4"
},
"peerDependencies": {
@@ -7099,9 +7114,9 @@
}
},
"node_modules/expo-modules-autolinking": {
- "version": "3.0.21",
- "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.21.tgz",
- "integrity": "sha512-pOtPDLln3Ju8DW1zRW4OwZ702YqZ8g+kM/tEY1sWfv22kWUtxkvK+ytRDRpRdnKEnC28okbhWqeMnmVkSFzP6Q==",
+ "version": "3.0.22",
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.22.tgz",
+ "integrity": "sha512-Ej4SsZAnUUVFmbn6SoBso8K308mRKg8xgapdhP7v7IaSgfbexUoqxoiV31949HQQXuzmgvpkXCfp6Ex+mDW0EQ==",
"license": "MIT",
"dependencies": {
"@expo/spawn-async": "^1.7.2",
@@ -7115,9 +7130,9 @@
}
},
"node_modules/expo-modules-core": {
- "version": "3.0.25",
- "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.25.tgz",
- "integrity": "sha512-0P8PT8UV6c5/+p8zeVM/FXvBgn/ErtGcMaasqUgbzzBUg94ktbkIrij9t9reGCrir03BYt/Bcpv+EQtYC8JOug==",
+ "version": "3.0.26",
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.26.tgz",
+ "integrity": "sha512-WWjficXz32VmQ+xDoO+c0+jwDME0n/47wONrJkRvtm32H9W8n3MXkOMGemDl95HyPKYsaYKhjFGUOVOxIF3hcQ==",
"license": "MIT",
"dependencies": {
"invariant": "^2.2.4"
@@ -7128,9 +7143,9 @@
}
},
"node_modules/expo-notifications": {
- "version": "0.32.12",
- "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.32.12.tgz",
- "integrity": "sha512-FVJ5W4rOpKvmrLJ1Sd5pxiVTV4a7ApgTlKro+E5X8M2TBbXmEVOjs09klzdalXTjlzmU/Gu8aRw9xr7Ea/gZdw==",
+ "version": "0.32.13",
+ "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.32.13.tgz",
+ "integrity": "sha512-PL0R1ulLVUgAswlXtRDKxBlcipNM3YA6+P5nB5JIhXbsjLJ7y+EKVaEhHhbaGzuK1QVsRQSJNm/4oISX+vsmFQ==",
"license": "MIT",
"dependencies": {
"@expo/image-utils": "^0.8.7",
@@ -7139,7 +7154,7 @@
"assert": "^2.0.0",
"badgin": "^1.1.5",
"expo-application": "~7.0.7",
- "expo-constants": "~18.0.9"
+ "expo-constants": "~18.0.10"
},
"peerDependencies": {
"expo": "*",
@@ -7148,9 +7163,9 @@
}
},
"node_modules/expo-router": {
- "version": "6.0.14",
- "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.14.tgz",
- "integrity": "sha512-vizLO4SgnMEL+PPs2dXr+etEOuksjue7yUQBCtfCEdqoDkQlB0r35zI7rS34Wt53sxKWSlM2p+038qQEpxtiFw==",
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/expo-router/-/expo-router-6.0.15.tgz",
+ "integrity": "sha512-PAettvLifQzb6hibCmBqxbR9UljlH61GvDRLyarGxs/tG9OpMXCoZHZo8gGCO24K1/6cchBKBcjvQ0PRrKwPew==",
"license": "MIT",
"dependencies": {
"@expo/metro-runtime": "^6.1.2",
@@ -7163,7 +7178,7 @@
"client-only": "^0.0.1",
"debug": "^4.3.4",
"escape-string-regexp": "^4.0.0",
- "expo-server": "^1.0.3",
+ "expo-server": "^1.0.4",
"fast-deep-equal": "^3.1.3",
"invariant": "^2.2.4",
"nanoid": "^3.3.8",
@@ -7183,7 +7198,7 @@
"@testing-library/react-native": ">= 12.0.0",
"expo": "*",
"expo-constants": "^18.0.10",
- "expo-linking": "^8.0.8",
+ "expo-linking": "^8.0.9",
"react": "*",
"react-dom": "*",
"react-native": "*",
@@ -7271,31 +7286,6 @@
"react-native": "*"
}
},
- "node_modules/expo/node_modules/expo-asset": {
- "version": "12.0.9",
- "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.9.tgz",
- "integrity": "sha512-vrdRoyhGhBmd0nJcssTSk1Ypx3Mbn/eXaaBCQVkL0MJ8IOZpAObAjfD5CTy8+8RofcHEQdh3wwZVCs7crvfOeg==",
- "license": "MIT",
- "dependencies": {
- "@expo/image-utils": "^0.8.7",
- "expo-constants": "~18.0.9"
- },
- "peerDependencies": {
- "expo": "*",
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/expo/node_modules/expo-file-system": {
- "version": "19.0.17",
- "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.17.tgz",
- "integrity": "sha512-WwaS01SUFrxBnExn87pg0sCTJjZpf2KAOzfImG0o8yhkU7fbYpihpl/oocXBEsNbj58a8hVt1Y4CVV5c1tzu/g==",
- "license": "MIT",
- "peerDependencies": {
- "expo": "*",
- "react-native": "*"
- }
- },
"node_modules/expo/node_modules/expo-keep-awake": {
"version": "15.0.7",
"resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.7.tgz",
@@ -11316,23 +11306,17 @@
}
},
"node_modules/react-dom": {
- "version": "19.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz",
- "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==",
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
+ "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
"license": "MIT",
"dependencies": {
- "scheduler": "^0.27.0"
+ "scheduler": "^0.26.0"
},
"peerDependencies": {
- "react": "^19.2.0"
+ "react": "^19.1.0"
}
},
- "node_modules/react-dom/node_modules/scheduler": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
- "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
- "license": "MIT"
- },
"node_modules/react-fast-compare": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 1e22ba4..64d8f9c 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -17,7 +17,7 @@
"@clerk/clerk-expo": "^2.18.3",
"@expo/vector-icons": "^15.0.0",
"@hookform/resolvers": "^3.3.0",
- "@react-native-picker/picker": "^2.11.4",
+ "@react-native-picker/picker": "2.11.1",
"@tanstack/react-query": "^5.0.0",
"ajv": "^8.12.0",
"ajv-keywords": "^5.1.0",
@@ -27,6 +27,7 @@
"expo-camera": "~17.0.0",
"expo-constants": "^18.0.10",
"expo-crypto": "^15.0.7",
+ "expo-font": "~14.0.9",
"expo-linking": "~8.0.0",
"expo-notifications": "~0.32.0",
"expo-router": "~6.0.14",
@@ -34,7 +35,7 @@
"expo-status-bar": "^3.0.8",
"expo-web-browser": "^15.0.9",
"react": "19.1.0",
- "react-dom": "^19.2.0",
+ "react-dom": "19.1.0",
"react-hook-form": "^7.47.0",
"react-native": "0.81.5",
"react-native-safe-area-context": "~5.6.0",
@@ -45,7 +46,6 @@
"devDependencies": {
"@babel/core": "^7.20.0",
"@testing-library/react-native": "^12.4.0",
- "@types/react": "~19.1.10",
"@types/react-native": "^0.73.0",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
diff --git a/apps/mobile/src/config/api.ts b/apps/mobile/src/config/api.ts
index 7085cac..4cb484f 100644
--- a/apps/mobile/src/config/api.ts
+++ b/apps/mobile/src/config/api.ts
@@ -1,5 +1,5 @@
export const API_BASE_URL = __DEV__
- ? 'https://390dfd6ece05.ngrok-free.app'
+ ? 'https://201081f0849c.ngrok-free.app'
: 'https://your-production-url.com'
export const API_ENDPOINTS = {
@@ -18,4 +18,4 @@ export const API_ENDPOINTS = {
HISTORY: '/api/attendance/history',
},
RECOMMENDATIONS: '/api/recommendations',
-}
\ No newline at end of file
+}
diff --git a/todo.md b/todo.md
index 10ed768..2efb9f1 100644
--- a/todo.md
+++ b/todo.md
@@ -1,5 +1,5 @@
## TODOS
-- fix fitness-profile network error
+
- enhance mobile up ui and styling
- implement create admin/trainer/client flow