Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Scan a receipt, split the bill, PayNow your friends
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Singapore bill splitter: scan a receipt, tap who had what, settle with PayNow. Live at wesplit-sg.vercel.app.
/b/[id]) shows each person's amount and QR, follows paid status, and can be revoked. Receipt photos stay on the owner's device and in private storage.ai, @ai-sdk/google) calling Gemini@supabase/supabase-js, @supabase/ssr)qrcode for PayNow QRsThe split math and PayNow payload live in lib/split.mjs. npm test runs the unit tests there.
The UI is one client page. Bills are written to the device first. A scan posts the photo to a route handler, which asks Gemini for structured line items and then discards the image. Accounts, sync, and public links go through Supabase when those environment variables are set.
flowchart LR
phone[Browser]
app[Next.js app]
scan["/api/scan"]
gemini[Gemini]
device[localStorage and IndexedDB]
supa[Supabase]
share["/b/id"]
phone --> app
app -->|photo| scan
scan --> gemini
app --> device
app -.->|signed in| supa
share --> supa
/api/scan checks the request origin, a short proof of work, and per-IP limits, then returns the merchant, items, discounts, and totals. PayNow QRs are built in the browser (EMVCo SGQR). Signed-in users sync bills, friends, and the PayNow profile to Postgres, and a compressed receipt photo to a private Storage bucket. Creating a share link stores a snapshot through a Supabase function; /b/[id] reads that snapshot.
Node.js 22.
npm install
npm run dev
Open http://localhost:3000.
npm test
npm run build
npm start
Names only. Put them in .env.local, which is gitignored. Scanning and splitting need the Gemini key. Accounts, sync, and share links need both Supabase variables.
| Name | Role |
|---|---|
GOOGLE_GENERATIVE_AI_API_KEY | Gemini API key. Required to scan. Read by @ai-sdk/google. |
ASK_MODEL | Optional model id. Defaults to gemini-3.5-flash-lite. |
NEXT_PUBLIC_SUPABASE_URL | Supabase project URL. Accounts, sync, and share links. |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase publishable key. Same features as the URL. |
MIT © 2026 Josh Lim