尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Split restaurant bills fairly — snap a receipt, claim your items, get per-person totals with proportional tax and tip. Fully offline PWA, no sign-up required.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Split restaurant bills fairly — snap a photo, claim your items, and let SplitIt handle the math.
A Progressive Web App that makes splitting the bill painless. Photograph a receipt, let OCR or your own AI (ChatGPT, Claude or Gemini) extract the line items, pass the phone around the table so everyone claims what they ordered, and get an instant per-person breakdown with proportional tax and tip.
You can also Enter Manually. Whichever way you start, you review and correct the items before splitting.查看完整 README ↗Split restaurant bills fairly — snap a photo, claim your items, and let SplitIt handle the math.
A Progressive Web App that makes splitting the bill painless. Photograph a receipt, let OCR or your own AI (ChatGPT, Claude or Gemini) extract the line items, pass the phone around the table so everyone claims what they ordered, and get an instant per-person breakdown with proportional tax and tip.
| Method | Accuracy | Needs | How |
|---|---|---|---|
| AI Assistant — bring your own key | Best | Your own OpenAI, Claude or Gemini API key | Paste your key once, then photograph the bill and tap Process with AI. Items arrive pre-filled. |
| AI Assistant — copy & paste | Best | A free ChatGPT or Claude chat | Copy SplitIt's prompt, attach your photo in the chatbot, paste the JSON reply back. No key needed. |
| Scan a Bill (OCR) | Good | Nothing — works offline | Tesseract.js reads the photo on-device; nothing is uploaded. |
You can also Enter Manually. Whichever way you start, you review and correct the items before splitting.
Bring your own key (BYOK): on the home screen choose Use AI Assistant, then Have an API key? Skip the copy-paste. Pick OpenAI, Claude or Gemini and paste your key. It is stored only in your browser (local storage) and removed with Remove key. While a receipt is processed, the photo and key pass through a stateless serverless proxy (
netlify/functions/ai-receipt.ts) to the provider; SplitIt never stores either. You pay your provider directly for usage.
vite-plugin-pwa (Workbox)netlify/functions/ai-receipt.ts)server/main.ts)npm install
npm run dev # Start dev server at http://localhost:5173
| Command | Description |
|---|---|
npm run dev | Start development server |
npm run build | Type-check and production build |
npm run preview | Preview production build locally |
npm run test | Run tests in watch mode |
npm run test:run | Run tests once |
npm run test:coverage | Run tests with coverage report |
npm run lint | Run ESLint |
npm run format | Format code with Prettier |
npm run typecheck | TypeScript type checking |
npm run check | Run all checks (typecheck + lint + format + tests) |
Every push to master triggers an automatic build and deploy.
npm run builddistindex.html (configured in netlify.toml)Live sessions use a lightweight WebSocket relay server hosted on Deno Deploy. The server is stateless — it forwards JSON messages between host and guests in ephemeral rooms. No data is stored.
server/main.tscd server && deno task devGET /health returns { status: "ok", rooms: N }src/services/liveSession/relayConfig.ts (override with VITE_RELAY_URL env var)src/
components/ # Reusable UI components
pages/ # Route-level page components
hooks/ # Custom React hooks
store/ # Zustand state stores
services/ # OCR, P2P, and other service modules
types/ # TypeScript type definitions
utils/ # Helper utilities
test/ # Test setup and utilities
MIT