🏃
running-app
Personal half marathon training tracker + AI coach for AthHalf 2026
- Primary: https://running.kenlill.com
- GitHub: https://github.com/klill6506/running-app
README
# AthHalf Training App Personal half marathon training tracker for **AthHalf — Athens GA, October 11, 2026**. 24-week plan, AI coach powered by Claude, installs to iPhone home screen as a PWA. > **Single user.** This app is just for me. The plan dates and goal times are > baked in. Fork at your own risk; nothing here generalizes. ## Stack - Vite + React 19 + TypeScript - React Router v7 - Tailwind CSS v3 - Zustand (state) - Supabase (Postgres + magic-link auth + Edge Function) - Anthropic API (Sonnet 4.6 with prompt caching), proxied via Edge Function - Render Static Site (hosting) - vite-plugin-pwa (Add to Home Screen on iOS Safari) ## Local development ```bash # 1. Install npm install # 2. Copy env template, fill in Supabase URL + anon key from the # `ken-personal` Supabase project (Settings → API) cp .env.example .env # 3. Run npm run dev ``` Then run `supabase/migrations/20260429_init.sql` in the Supabase SQL editor once. It creates tables, enables RLS, and installs a trigger that auto-creates a `settings` row on signup. ## Edge Function The coach is a Supabase Edge Function (`supabase/functions/coach`). Deploy with the Supabase CLI: ```bash supabase functions deploy coach supabase secrets set ANTHROPIC_API_KEY=sk-ant-... # optional: pin a different model supabase secrets set COACH_MODEL=claude-sonnet-4-6 ``` ## Tests ```bash npm test # vitest watch npm run test:run # one shot ``` ## Build + deploy ```bash npm run build # → dist/ ``` Render Static Site is configured for `npm install && npm run build` with publish dir `dist`. Set `VITE_SUPABASE_URL` and `VITE_SUPABASE_ANON_KEY` in the Render dashboard so they're baked into the bundle at build time. ## Project files - `SPEC.md` — original build spec (read-only reference) - `CLAUDE.md` — project rules + tech stack (this is what Claude Code reads) - `MEMORY.md` — accumulated context, decisions, gotchas - `STATUS.md` — what's shipped, what's next, blockers (update before every push …(truncated for upload size)
STATUS
No STATUS.
DECISIONS
No DECISIONS.
MEMORY
No MEMORY.
CLAUDE.md
No CLAUDE.md.
Diary mentions
No recent diary mentions.