尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A mobile-first PWA that helps self-employed trade contractors (painters,
handymen, barbers, etc.) snap photos of receipts, auto-categorize tax
write-offs with Gemini, and export clean data for tax season.
Stack: Next.js (App Router) · TypeScript · Tailwind CSS · shadcn/ui ·
Supabase (Postgres + Auth + Storage) · Google Gemini 3.6 Flash · Stripe.查看完整 README ↗A mobile-first PWA that helps self-employed trade contractors (painters, handymen, barbers, etc.) snap photos of receipts, auto-categorize tax write-offs with Gemini, and export clean data for tax season.
Stack: Next.js (App Router) · TypeScript · Tailwind CSS · shadcn/ui · Supabase (Postgres + Auth + Storage) · Google Gemini 3.6 Flash · Stripe.
npm install
supabase/migrations/0001_init.sql. This creates
the profiles, receipts, and invoices tables with row-level security,
a trigger that auto-creates a profile on signup, and a private receipts
storage bucket for uploaded photos.Create a key at Google AI Studio.
/api/stripe/webhook listening for
checkout.session.completed, customer.subscription.created,
customer.subscription.updated, and customer.subscription.deleted.
For local development, use the Stripe CLI:
stripe listen --forward-to localhost:3000/api/stripe/webhook
Copy .env.local.example to .env.local and fill in the values from steps
2-4:
cp .env.local.example .env.local
npm run dev
Open http://localhost:3000. The app is installable as a PWA (Add to Home Screen) once served over HTTPS or from localhost.
src/app - routes (App Router): /, /auth, /dashboard, /billing,
/invoices, and API routes under src/app/api.src/components - UI components; src/components/ui holds shadcn
primitives.src/lib - Supabase clients, Gemini receipt parsing, Stripe client, CSV
export, and shared types.supabase/migrations - SQL schema and RLS policies.public/manifest.json, public/sw.js - PWA manifest and service worker.UploadReceipt (src/components/dashboard/upload-receipt.tsx)
uploads a photo to /api/parse-receipt, which stores the image in Supabase
Storage and calls Gemini with a strict JSON schema to extract merchant,
date, totals, tax, and category. The result is shown in a preview modal for
the user to edit; "Approve & Save" posts to /api/receipts, which inserts
the row into the receipts table./billing calls /api/stripe/checkout to start a Checkout
Session for the Basic or Pro price. The webhook updates
profiles.subscription_status, which gates the /invoices page (Pro only).