OpenTrailPaper
LilyGO T5S3 4.7" E-Paper PRO용 오픈소스 자전거 컴퓨터 펌웨어, 오프라인 지도·GPX 경로·FIT 기록·블루투스 센서 지원
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
workout/fuel log
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A mobile-first fitness tracking web app: log workouts, runs, and meals in plain English, and Claude turns each entry into structured data plus a line of coaching feedback. Built with Next.js (App Router) + Tailwind CSS, persisted in Supabase (Postgres), and deployed as a standard web app.
workouts, runs, meals, favorites.claude-sonnet-4-6, server-side only) — parses free-text entries into structured fields via a forced tool call, and returns coaching feedback in the same response.All AI parsing and database access happens in Next.js API routes
(app/api/**/route.ts), which run server-side — the Anthropic key and the
Supabase service role key are never sent to the browser.
supabase/schema.sql. This creates the workouts, runs, meals, and favorites tables (with RLS enabled and no public policies — all access goes through the service role key server-side).service_role secret key.Create a key at console.anthropic.com if you don't have one.
Copy .env.example to .env.local and fill in the three values:
cp .env.example .env.local
ANTHROPIC_API_KEY=sk-ant-...
SUPABASE_URL=https://xxxx.supabase.co
SUPABASE_SERVICE_ROLE_KEY=eyJ...
npm install
npm run dev
Open http://localhost:3000 — resize your browser to a phone width (or open on an actual phone) to see the intended mobile layout.
This is a standard Next.js app — deploy it anywhere Next.js runs (Vercel is the simplest path since API routes need a Node.js server, not a static host):
ANTHROPIC_API_KEY,
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY) in the Vercel project settings.Any other Node-capable host (Render, Railway, Fly.io, a VPS with next start,
etc.) works the same way — set the three env vars and run npm run build && npm start.
raw_text) alongside the
AI-parsed structured fields and a coaching_feedback string — so nothing is
lost if the parse is imperfect, and you can always see what was originally typed.favorites snapshot the parsed structured data for a past entry, so
"log again" from History re-inserts a new row instantly without calling
Claude a second time.lib/marathonPlan.ts) is fully static/deterministic —
it computes each week's date range backward from the race date and requires
no database or API calls.