Mobile

Running loop route planner for mobile

Mobile app that generates a loop running route of a chosen distance from the phone's current GPS position, with map, distance, and duration.

react-nativeexpotypescript

Built 1 time, downloaded 0 times.

Install from your terminal

Run this in your project folder. It signs you in, shows what changes and asks before it overwrites a file.

npx claude-lab add running-loop-route-planner-for-mobile-a2a54b
CLAUDE.md
# Runner route planner

## Purpose
The app lets a runner pick a distance, such as 5 km or 10 km, and generates a loop route that starts at the phone's current GPS position. The route appears on a map with its distance and estimated duration. The user can save the route and start a run in the device's maps app.

This is a solo project built by a beginner. Keep changes small and explain them plainly.

## Stack
Stack not yet chosen. Default recommendation: React Native with Expo and TypeScript.
Record the final choice here once made (framework, map library, routing provider, target platforms).

## Commands
Fill these in once the stack is set. Until then, the verify skill is the source of truth.
- Install: `<install command>`
- Start dev server: `<start command>`
- Unit tests: `<unit test command>`
- Type check: `<type check command>`
- Lint: `<lint command>`
- Build for iOS simulator: `<iOS build command>`
- Build for Android simulator: `<Android build command>`

## Read first
- SPEC.md: requirements and acceptance criteria.
- PLAN.md: the current phase and its /goal prompt.
- REVIEW.md: checklist to run before calling a change done.

@REVIEW.md

## Verify rule
- After every change, run the verify skill.
- Do not report done until it passes.
- Show the exit code of each step.

## Location and privacy
- Never hardcode coordinates in source.
- Use fixtures under test/fixtures for sample GPS data.
- Location data stays on the device unless a feature explicitly says otherwise.
- Never log raw coordinates, even in debug output.
- Request location only while planning a route, with a clear reason string on iOS and Android.

## API keys
- Read keys from environment variables, such as MAPS_API_KEY.
- Never commit keys.
- Real keys live in .claude/settings.local.json or the shell environment.
- In examples and docs, use the placeholder YOUR_MAPS_API_KEY.

## Routing
- All route generation goes through the single module in src/routing.
- The routing provider sits behind an interface so it can be swapped.
- UI components never call a routing API directly.
- Route tests use the fake routing provider and need no network.

## Conventions
- TypeScript in strict mode.
- Functional components only.
- Small files. Split a component once it grows past about 200 lines.
- Tests live next to the code they test.
- Ask before adding any new dependency.

## Gotchas
- iOS and Android need a clear permission reason string before the app asks for location.
- Simulators do not produce real GPS movement. Use mock location to test a run.
- The map provider stays open until the questions in SPEC.md are answered.
- Keep this file under 120 lines. Move long detail into SPEC.md, PLAN.md or skills.
Use for my project