Open Net Worth
Open Net Worth는 직접 운영하는 오픈소스 개인 AI 자산 비서로, 전체 재무를 하나의 원장에 기록하고 사용자가 제어하는 AI가 관리
Dulypaid는 창작자의 브랜드 계약·GST 청구서·결제·원천징수·세금 마감일을 하나의 장부에 보관합니다
Dulypaid keeps a creator's brand deals, GST invoices, payments, TDS and tax deadlines in one ledger, and reminds you before anything slips.
금융TypeScript · PythonGitHub @Karanjoshi128온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The business back-office for Indian creators and their managers. It covers brand deals, the real money math (agency fee, TDS, GST), GST invoices, payments, TDS reconciliation, tax deadlines, reminders, affiliate links and a public media kit.
| App | Next.js 16 (App Router, Server Components, Server Actions), React 19, TypeScript strict |
| UI | Tailwind v4, shadcn on Base UI (render prop, not asChild), framer-motion, lucide, sonner, cmdk |
| Data | Postgres on Supabase, Prisma 6, tables in the private app schema |
| Auth | Supabase Auth: email one-time code (+ optional Google). src/proxy.ts refreshes the session |
Resend REST API (src/lib/server/email.ts) | |
@react-pdf/renderer with bundled Noto Sans (has the ₹ glyph) in src/assets/fonts | |
| Files | Backblaze B2 (any S3-compatible store) or Supabase Storage; private bucket, signed URLs (src/lib/server/storage.ts) |
| Jobs | Vercel Cron → /api/cron/daily (reminders + digests + keep-alive) |
| Billing | Razorpay Subscriptions + signed webhook |
| AI | AI SDK 7 + Vercel AI Gateway, structured output (brief import) |
src/lib/ Pure domain logic (unit-tested, no I/O)
finance.ts Deal breakdown: agency fee → TDS → net; GST split; TDS presets
status.ts Invoice/deal payment status
reminders.ts The reminders engine: snapshot in, keyed reminders out
tax-calendar.ts GSTR-1/3B (monthly + QRMP), PMT-06, advance tax, ITR, TDS visibility
money.ts dates.ts Paise and IST calendar-day helpers, Indian number formatting, FY
gst.ts msme.ts State codes, GSTIN checksum, supply type; MSMED s.16 interest
src/lib/server/ Server-only: Prisma queries, notifications sync, invoices, PDF, email, billing
src/app/(app)/ The signed-in app (one folder per section, each with its actions.ts)
src/app/c/[handle] Public media kit + inquiry form
src/app/l/[slug] Tracked short-link redirect
src/app/api/ Cron, PDFs, exports, files, billing webhook
prisma/schema.prisma Data model; prisma/seed.ts builds a demo workspace
Int). Percentages are basis points. Inputs are capped at ₹2 crore.@db.Date, handled as "YYYY-MM-DD" strings, and "today" is computed in Asia/Kolkata
(todayISO()). Never use new Date() for a due date.workspaceId. Server Actions go through runAction(capability, fn), which
resolves the member and checks the role. Expected failures throw UserError and come back as readable
ActionResults.InvoiceCounter (gapless per FY).
Issued invoices are immutable: cancel, don't edit.syncNotifications() upserts by stable key and resolves what
no longer applies. It runs daily and lazily on page load.pnpm install
cp .env.example .env.local # or use the provided .env.local
pnpm db:push
pnpm dev
Without Supabase keys, pnpm dev shows a dev-only sign-in that accepts any email. It is disabled in production builds.
Checks: pnpm check runs the typecheck, ESLint and unit tests (Vitest). The business rules live in
src/lib/__tests__, including the reel's ₹1 lakh → ₹72,000 / ₹86,400 example.
UI audits: scripts/qa/ holds Playwright audits that load every screen in light and dark at five widths,
open every dialog and menu, and submit every form empty. They check layout, focus, contrast (axe-core) and
that nothing is written. See scripts/qa/README.md; run them after any UI change.