11/15/2025
Made some progress on the layout design . Following the expo tutorial but adapting it to my own purpose.
TODO:
-
Make the recording button have React state, change the component based on a recording toggle.
-
Get some work in tracking gps started
-
Investigate adding gesture support , perhaps adding a swipe gesture to move between pages, and some animation for changing pages via swipe. Use the libraries described at https://docs.expo.dev/tutorial/gestures/
-
Continue working on colors / theming etc
11/16/2025
Implemented GPS tracking. While active, write Locations to an array in memory.
When user stops, save the array to the database.
useRecording hook abstracts out stateful logic from Recording component
useGpsTracking handles GPS/Location interactions with Expo
useRouteRepository is the repository to translate between JS / SQL representations of the Routes/Points
StorageService handles database initialization (top level of the app is in app/_layout.tsx)
TODO:
-
improve layout/UI spacing
-
Improve theming
-
Light mode / dark mode
-
View past runs in the Activities tab (different from Stats tab?)
-
Use geolib instead of custom Haversine distance in the utils/RouteUtils.jsx file
11/17/2025
Extracted almost all logic out of the recording/runinfo/liverunstats components. Only formatting function is called from LiveRunStats. RunInfo and LiveRunStats can probably be combined.
All the logic is now in useRecording hook, which computes all the information to be displayed by the UI and passes that to the components.
Runs are now saved to the database, but there is no way to see what is in the database.
Want to work on Activities list next.
Significant UI work still remains. Might be worth looking into some component libraries.
TODO:
-
Add Activities tab, where previous runs are fetched from the database and one card per activity is displayed.
-
Improve UI
-
Light Mode/ Dark Mode
11/19/2025
Added light mode/dark mode.
Created Previous Activities tab.
TODO:
-
Make each activity card wrapped in Pressable, clicking it takes to page for individual activity with a map of the route
-
Make sure that both light mode and dark mode look good. Hardcoding use of individual values of primary/accent/neutral doesn't work super well, since they look different on light and dark background
also look into changing the color of the recording button
-
Work on smoothing out distance calculations from the routes
-
Add a setting for miles/kms
-
Create the stats page
-
Make sure the Activities List isn't going under the footer with different tabs. Hard to know why it isn't all fitting.
-
Fix Main page UI, before recording is started
-
Fix countdown UI
-
Make GPS tracking work in the background
-
Background color in light mode looks a bit ugly. Maybe changing it and adding a gradient would look better.
-
Apple health integration using https://github.com/kingstinct/react-native-healthkit
11/23/2025
working on getting the page for individual routes to work. not able to get a map to show up via openstreetmap and webview yet. SQL queries for the GPS points is returning an empty array. Need to continue debugging.
TODO:
-
fix sql queries
-
add more tests with Jest