Following Ishaan's 20-week road to a sub-4:00 at the 2026 NYC Marathon.
Translation pending
Sports & fitnessGitHub @IshaanChandraOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Personal training tracker for a Sub-3:45 NYC Marathon plan (race day: Sun Nov 1, 2026). Mobile-first, works on phone and laptop, progress syncs across devices.
Built from Sub_3-45_NYC_Marathon_Plan.xlsx (5 tabs → structured JSON). The plan itself is
immutable in git; check-offs, logged actuals, workout edits/swaps, and travel scenario picks
live in Supabase as a revertible override layer.
/guide/race-day, the Guide tab's landing page) — one
shareable link for family/friends: an animated cartoon-runner hero and race-bib card,
then collapsible sections: how to track me in the app, 3 viewing stops with be-there
times, subway directions and course maps (with the cartoon runner on the spot), the
post-race meetup, an outfit flat lay, and mile-by-mile ETAs. Content lives in
src/data/spectator.ts.Next.js 16 (App Router) · TypeScript · Tailwind v4 · Supabase Postgres (or a local JSON file store when Supabase env vars are unset) · Vercel.
npm install
npm run dev # http://localhost:3000 — no PIN, local file store in .data/
Regenerate plan data after editing the spreadsheet:
python3 scripts/convert_xlsx.py # validates weekly mileage, writes src/data/*.json
supabase/schema.sql in the SQL editor,
copy the Project URL and service_role key.APP_PIN, SUPABASE_URL,
SUPABASE_SERVICE_KEY, deploy. Optional features add STRAVA_CLIENT_ID /
STRAVA_CLIENT_SECRET (auto-sync), NEXT_PUBLIC_VAPID_PUBLIC_KEY / VAPID_PRIVATE_KEY
/ VAPID_SUBJECT (push), CRON_SECRET (weekly-recap cron auth).Docs: architecture · data model · roadmap/progress · decisions · Garmin sync