尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A calorie, macro, exercise, and weight tracking web app. Users log meals (via barcode scan, voice, or manual entry), track workouts, and follow a predicted-vs-actual weight trend based on their computed BMR/TDEE.
• Frontend (Frontend/) — React 19 + Vite + TypeScript, Tailwind CSS v4, Zustand, react-router-dom v7
• Backend (Backend/) — NestJS 11 + Prisma + PostgreSQL (Neon)
• External APIs — Open Food Facts (barcode lookup), USDA FoodData Central (food name lookup), Web Speech API (client-side voice input), Cloudinary (avatar uploads)查看完整 README ↗A calorie, macro, exercise, and weight tracking web app. Users log meals (via barcode scan, voice, or manual entry), track workouts, and follow a predicted-vs-actual weight trend based on their computed BMR/TDEE.
Frontend/) — React 19 + Vite + TypeScript, Tailwind CSS v4, React Context, react-router-dom v7Backend/) — NestJS 11 + Prisma + PostgreSQL (Supabase, database only)This is a monorepo, but Frontend and Backend deploy independently:
Frontend/ in the Vercel dashboard; framework auto-detected, no committed manifest)Backend/; NestJS is auto-detected and runs as a single Vercel Function; env vars are managed in the Vercel dashboard, no committed manifest)docker-compose.yml.See docs/architecture.md for the full system design and docs/business-logic.md for the calorie/TDEE/prediction formulas.
The backend has run on two different hosts:
Backend/ and its build, deploy and environment variables were managed in the Railway dashboard. Every feature up to October 2026 was built and shipped on it: auth with email OTP, food and exercise logging, barcode lookup, and profiles and avatars. This is where I learned to host a backend: connecting a monorepo subfolder, managing secrets on the platform, and wiring CORS between separately hosted frontend and backend.docs/adr/0011-backend-on-vercel-functions.md.docker compose up -d from the repo root)cd Backend
npm install
cp .env.example .env # DATABASE_URL already points at the local Docker DB; fill in ACCESS_TOKEN, REFRESH_TOKEN, USDA_API_KEY, etc.
npx prisma db push # applies the schema — this project uses `prisma db push`, not migrations
npx prisma generate
npx prisma db seed # loads the canonical food catalog (idempotent)
npm run start:dev # http://localhost:3000
cd Frontend
npm install
cp .env.example .env # set VITE_API_BASE_URL and VITE_GOOGLE_CLIENT_ID
npm run dev # http://localhost:5173
| Backend | Frontend | |
|---|---|---|
| Dev server | npm run start:dev | npm run dev |
| Build | npm run build | npm run build |
| Unit tests | npm test | — |
| E2E tests | npm run test:e2e | — |
| Lint | npm run lint (auto-fixes) | npm run lint (no auto-fix) |
| Format | npm run format | npm run format |
Backend unit tests (npm test) run in CI on every PR (.github/workflows/ci.yml). Backend E2E tests are not run in CI — run them locally whenever backend behavior changes.
Backend/ NestJS API — see Backend/README.md
Frontend/ React SPA — see Frontend/README.md
docs/ Architecture, business logic, and requirements docs
specs/ Per-feature specs (spec-kit workflow: spec.md → plan.md → tasks.md)
Real secrets are never committed — see each package's .env.example for the full list of required variables (Backend/.env.example, Frontend/.env.example).
JWTs are signed with HS256 using two symmetric secrets (ACCESS_TOKEN, REFRESH_TOKEN). Email/password signup requires verifying a 6-digit OTP sent by email before a session is issued. Google OAuth is also supported. Refresh tokens rotate on use (single-use, revoked on refresh).