GymCoach
근력 트레이닝 기록 및 개인 AI 코치
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
• Vue 3 + Vite frontend in fitness-web/
• Node + Hono API in fitness-api/
• Vercel function adapter in api/
• Postgres via Neon
This repo is set up for one Vercel project. The frontend is deployed as static assets and the backend is exposed from /api/*.
4. The frontend already defaults to same-origin /api. For local dev it proxies to the backend through Vite.
• Frontend: http://localhost:5173
• API: http://localhost:3000
• Frontend calls API at /api, proxied by Vite during local dev
scripts/fitness.mjs logs entries from any terminal without opening the app. Install once:README 전문 보기 ↗Calorie tracking app with:
fitness-web/fitness-api/api/This repo is set up for one Vercel project. The frontend is deployed as static assets and the backend is exposed from /api/*.
Production: https://food-tracker-weld-six.vercel.app
.
├── api/ # Vercel function entrypoint
├── fitness-api/ # Real backend code
│ ├── drizzle/ # SQL migrations
│ └── src/
│ ├── app.ts # API routes
│ ├── db/ # DB client, schema, migration runner
│ ├── lib/ # Shared backend helpers
│ ├── seed.ts # Dev/sample data seeding
│ └── server.ts # Local API server
├── fitness-web/ # Vue frontend
├── vercel.json # Vercel project config
└── package.json # Workspace scripts
npm install
cp fitness-api/.env.example fitness-api/.env
fitness-api/.env:DATABASE_URL=postgresql://...
APP_TIMEZONE=America/Chicago
CALORIE_UNLOCK_SCHEDULE=09:00=0.25,12:00=0.25,17:00=0.25,21:00=0.25
CALORIE_UNLOCK_FALLBACK_GOAL=2000
GOAL_WEIGHT=189.0
GMAIL_ALERT_ADDRESS=
GMAIL_ALERT_APP_PASSWORD=
PORT=3000
CORS_ORIGIN=http://localhost:5173
/api. For local dev it proxies to the backend through Vite.From the repo root:
npm run dev # frontend + backend together
npm run dev:web # frontend only
npm run dev:api # backend only
npm run test # API tests
npm run build # full verification build
npm run build:web # frontend build only
npm run build:api # backend typecheck/build only
Local URLs:
http://localhost:5173http://localhost:3000/api, proxied by Vite during local devfitness)scripts/fitness.mjs logs entries from any terminal without opening the app. Install once:
ln -sf "$PWD/scripts/fitness.mjs" ~/.local/bin/fitness
fitness 30 # 30 calories — direct POST, no LLM
fitness protein 40 # also: sugar, carbs, caffeine
fitness ate a bagel and a coffee # estimated, then logs each metric (~3s)
fitness -n a bagel # preview without logging
Estimation runs through local headless Claude Code (claude -p --json-schema), so it
needs no OpenAI key. If the claude CLI is missing or fails it falls back to
POST /text/parse, which uses the deployment's OPENAI_API_KEY. Force one backend with
FITNESS_ESTIMATOR=claude or FITNESS_ESTIMATOR=api.
It targets production by default. To point it elsewhere, set FITNESS_API_URL in the
environment or in ~/.config/fitness/config (env wins):
mkdir -p ~/.config/fitness
echo 'FITNESS_API_URL=http://localhost:3000/api' > ~/.config/fitness/config
The fitness-log Claude Code skill (in ~/.claude/skills/) wraps this so plain requests
in a session log directly.
npm run db:migrate
This applies SQL files in fitness-api/drizzle/ to the database in DATABASE_URL.
npm run db:seed
If you want to normalize the recent trend data used by TDEE and unlock calculations, run:
npm run db:set-baseline --workspace fitness-api -- --days 30 --weight 205 --calories 2500
Notes:
DATABASE_URL from fitness-api/.envAPP_TIMEZONE unless you pass --end-date YYYY-MM-DDExample for a future reset once your scale is back:
npm run db:set-baseline --workspace fitness-api -- --days 30 --weight 198.4 --calories 2400
When changing the database shape:
fitness-api/src/db/schema.tsnpm run db:generate
fitness-api/drizzle/npm run db:migrate
fitness-api/src/app.tsfitness-api/src/app.test.tsImportant:
Primary backend files:
fitness-api/src/app.tsfitness-api/src/db/schema.tsfitness-api/src/lib/time.tsapi/route.tsWhen changing API behavior:
fitness-api/src/app.tsfitness-api/src/app.test.tsfitness-web/src/services/api.tsfitness-web/src/types.tsnpm run test
npm run build
Notes:
/api/route.ts is a thin Vercel adapter onlyvercel.json rewrites /api/:path* into that concrete Vercel function so nested API paths work in productionfitness-api/, not in api/Primary frontend files:
fitness-web/src/services/api.tsfitness-web/src/types.tsfitness-web/src/stores/*fitness-web/src/components/*When changing frontend behavior:
npm run build:web
Production uses:
DATABASE_URLAPP_TIMEZONE=America/ChicagoUsually you do not need:
CALORIE_UNLOCK_SCHEDULECALORIE_UNLOCK_FALLBACK_GOALGOAL_WEIGHTGMAIL_ALERT_ADDRESSGMAIL_ALERT_APP_PASSWORDVITE_API_BASE_URLCORS_ORIGINProduction uses same-origin /api and ignores VITE_API_BASE_URL on purpose. Keep that env var for local-only overrides.
mainfitness-web/distapi/Vercel project settings:
/Othernpm installnpm run build:webfitness-web/distPushing code is not enough if the DB changed. You also need to run:
DATABASE_URL=postgresql://... npm run db:migrate
against the deployed Neon database.
fitness-api/src/app.tsfitness-api/src/app.test.tsfitness-web/src/services/api.ts/api/healthDATABASE_URL exists in VercelUse this section as the fast-start brief for future agents:
fitness-web/fitness-server/; the Rust backend is goneapi/ and business logic in fitness-api/npm run buildfitness-api/.envDEPLOY.mdfitness-web/API.md