Session count alone says nothing about consistency, which is what makes pelvic floor training work. Record every completion timestamp and derive streaks from local calendar days: current streak (survives until a full day is missed), best streak, and a 14-day dot strip on the home screen. The done screen now shows the streak so finishing is rewarded. - src/lib/streak.ts: pure day-key / streak logic, covered by node --test - store: new `sessions` array, defaulted for pre-existing installs - home: StreakCard, screen now scrolls for smaller phones - tsconfig: TS 6 no longer auto-includes @types, so declare node types Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
38 lines
1004 B
JSON
38 lines
1004 B
JSON
{
|
|
"name": "kegel",
|
|
"main": "expo-router/entry",
|
|
"version": "1.0.0",
|
|
"dependencies": {
|
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
"expo": "~57.0.11",
|
|
"expo-constants": "~57.0.9",
|
|
"expo-haptics": "~57.0.1",
|
|
"expo-keep-awake": "~57.0.1",
|
|
"expo-linking": "~57.0.5",
|
|
"expo-router": "~57.0.11",
|
|
"expo-splash-screen": "~57.0.5",
|
|
"expo-status-bar": "~57.0.1",
|
|
"expo-system-ui": "~57.0.2",
|
|
"react": "19.2.3",
|
|
"react-dom": "^19.2.3",
|
|
"react-native": "0.86.2",
|
|
"react-native-safe-area-context": "~5.7.0",
|
|
"react-native-screens": "~4.26.0",
|
|
"react-native-svg": "15.15.4",
|
|
"react-native-web": "^0.21.2"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^26.4.1",
|
|
"@types/react": "~19.2.2",
|
|
"typescript": "~6.0.3"
|
|
},
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "node --test src/lib/*.test.ts"
|
|
},
|
|
"private": true
|
|
}
|