尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Household finance dashboard for managing income, expenses, accounts, budgets,
funds/goals, and shared household finances.
• Next.js 16 (App Router) + TypeScript
• Tailwind CSS 4
• Neon (serverless Postgres)
• Auth.js (NextAuth) with Google OAuth
• Vitest
• Vercel (deploy target)
• pnpm dev — Next.js dev server
• pnpm build — production build
• pnpm start — run production build
• pnpm test — run vitest suite
• pnpm typecheck — TypeScript check
• pnpm lint — ESLint查看完整 README ↗Household finance dashboard for managing income, expenses, accounts, budgets, funds/goals, and shared household finances.
pnpm install
cp .env.example .env.local # fill in DATABASE_URL + Google OAuth values
pnpm dev
Scripts:
pnpm dev — Next.js dev serverpnpm build — production buildpnpm start — run production buildpnpm test — run vitest suitepnpm typecheck — TypeScript checkpnpm lint — ESLintThe Money Inbox can import transactions from Gmail. The architecture is in place; to actually connect your Gmail you need Google OAuth credentials.
Everything works without this setup via the "Sync fixture messages (dev)"
button on /inbox — same pipeline, bundled sample bank emails.
Create (or pick) a project at https://console.cloud.google.com.
APIs & Services → Library → enable Gmail API.
APIs & Services → OAuth consent screen:
https://www.googleapis.com/auth/gmail.readonly.APIs & Services → Credentials → Create Credentials → OAuth client ID:
http://localhost:3000/api/gmail/oauth/callback.Copy the client id + secret into .env.local:
AUTH_GOOGLE_CLIENT_ID=…
AUTH_GOOGLE_CLIENT_SECRET=…
AUTH_GOOGLE_REDIRECT_URI=http://localhost:3000/api/gmail/oauth/callback
Generate a token-encryption key:
openssl rand -hex 32
Store it as TOKEN_ENCRYPTION_KEY in .env.local. OAuth refresh tokens are
AES-256-GCM encrypted with this key before being written to Postgres.
Restart pnpm dev. The Connect Gmail button on /inbox becomes active.
Only parsers in src/lib/parsers/ know how to turn an email into a
transaction. Phase 7 ships one parser (BCA). Adding a bank is a new file
implementing BankParser plus one line in src/lib/parsers/registry.ts.
Low-confidence or unrecognised messages are stored in imported_messages
with parse_status = 'partial' | 'unknown' | 'failed' and never become a
transaction row — fabrication is not allowed (see
docs/financial-logic.md §15).
Before changing anything, read the relevant spec:
docs/financial-logic.md — transaction and money-movement semanticsdocs/product-spec.md — product behavior and UI directiondocs/gmail-integration.md — Gmail import architectureProject-wide rules and MVP scope live in CLAUDE.md.