Ortaklık Kasası
A self-hostable settlement and accounting app that records expenses/income between business partners, computes net balances, and suggests the minimum number of transfers.
Overview
Automates the hassle of manually tracking multiple partners’ shared expenses, who owes what, and net balances — the "who should send how much to whom?" question. Splitwise-like, but with expense-based proportional distribution.
A single SQLite file self-hosted on a cheap VPS via a Supabase → PocketBase migration; expense-based proportional distribution + min-transfer solution to the classic debt-splitting problem; enterprise-grade security for a small team with MFA + CAPTCHA + whitelist.
A mature MVP tagged v1.0 with 5 completed sprints; detailed deploy guide, production Docker Compose, and build available.
Highlights
Total expense/income/net, per-partner balance table, per-product profit/loss report.
Categorized (domain, SSL, hosting, Claude, software…) expense CRUD; each expense can be split proportionally among selected partners.
Income records that can be tied to a product; payment records between partners update balances.
Expense-based shares + greedy minimum-transfer suggestion.
CSV export, date-range filter, realtime sync, ErrorBoundary.
Mandatory MFA (password + email OTP), whitelist signup (public signup off), Cloudflare Turnstile CAPTCHA (server-verified), RLS-equivalent access via the PocketBase rules engine.
Tech Stack
| Frontend | React 18 + TypeScript + Vite 6 + Tailwind 4 |
| Backend | PocketBase (SQLite; migrated from Supabase) |
| Deploy | Frontend on Vercel · PocketBase Docker + Caddy (automatic TLS) on VPS self-host |
| Brevo SMTP (OTP) |