尚未偵測到更新。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