尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Nutrición que se adapta a ti — personalised nutrition plans built around a person's goals, preferences and life, and re-planned every fortnight from what actually worked. The product loop: sign up → onboarding → a 14-day meal plan → cook and track → shopping list → progress → biweekly check-in → an improved next plan → repeat. apps/api is the only process that opens a database connection, holds an auth secret, or calls an AI provider. The browser never touches any of them. Then fill in the environment. Copy each .env.example next to it as .env:檢視完整 README ↗
Nutrición que se adapta a ti — personalised nutrition plans built around a person's goals, preferences and life, and re-planned every fortnight from what actually worked.
The product loop: sign up → onboarding → a 14-day meal plan → cook and track → shopping list → progress → biweekly check-in → an improved next plan → repeat.
| Layer | What |
|---|---|
| Web | Next.js 16, React 19, CSS Modules over a shared token system |
| API | NestJS 12 (ESM), Better Auth, Swagger, Terminus, pino |
| Domain | packages/core — Zod entities, pure domain logic, Drizzle repositories |
| Database | Neon PostgreSQL via Drizzle ORM |
| Tooling | pnpm 11, Turborepo, TypeScript 6, Vitest + Jest, ESLint 9, Prettier |
apps/api is the only process that opens a database connection, holds an auth secret, or
calls an AI provider. The browser never touches any of them.
apps/web — web client (:3000)
apps/api — backend (:3001)
apps/docs — design-system docs + the docs/ viewer at /workspace (:3002)
apps/cli — developer CLI
packages/core, packages/database, packages/ui
configurations/eslint, typescript, prettier
pnpm install
pnpm hooks:install # refuses a push the gate has not agreed to
Then fill in the environment. Copy each .env.example next to it as .env:
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env
cp packages/database/.env.example packages/database/.env
You need:
-pooler) as DATABASE_URL, and the direct one as DIRECT_DATABASE_URL. Both go in
apps/api/.env; DIRECT_DATABASE_URL also goes in packages/database/.env.openssl rand -base64 48 → BETTER_AUTH_SECRET.ANTHROPIC_API_KEY (nothing uses it yet) and SMTP credentials. Without SMTP,
verification and password-reset links are written to the API log so local development
still works end to end.Then create the schema and load reference data:
pnpm --filter database migrate
pnpm --filter database seed # allergen catalogue + ingredients — NOT optional:
# the allergy layer has nothing to enforce without it
pnpm dev
| Command | What it does |
|---|---|
pnpm dev | All apps in watch mode, plus the package build watchers |
pnpm build | Build everything |
pnpm lint / pnpm lint:fix | Lint |
pnpm ts:check | Type-check |
pnpm test / pnpm test:coverage | Tests |
pnpm check:leaks | Scan tracked files for absolute paths and private patterns |
pnpm hooks:install | Point git at .githooks, so a push runs the gate first |
pnpm --filter database generate | Generate a migration from the schemas |
pnpm --filter api test:e2e | End-to-end suite — needs a real database |
After editing
packages/coreorpackages/database, runpnpm --filter core build. They compile to CommonJS forapps/api;pnpm devwatches them for you.
AGENTS.md — how to work in this repo. Start here.docs/PRODUCT.md — what it is and who it is for.docs/ARCHITECTURE.md — the design and its invariants.docs/ROADMAP.md — what is built and what comes next.docs/decisions/ — why the structural choices were made.With pnpm dev running, docs/** renders at http://localhost:3002/workspace.
The foundation and one vertical slice are complete: authentication, the ten-step
onboarding, the profile, computed daily targets, the allergy validator, the full schema.
Plan generation and everything downstream of it are not built yet — the dashboard says
so rather than offering a button that does nothing. See
docs/ROADMAP.md.
NutrIA produces general meal plans. It does not diagnose, prescribe, or replace a doctor or a registered dietitian. Allergies, intolerances and the minimum daily calorie floor are enforced by deterministic code before anything reaches a user — never by asking a language model to comply.