Personal finance

Vloxyde

A personal-finance ledger that also tracks shared expenses without conflating the two — double-entry postings are canonical, every figure drills back to the events that produced it.

Jun 2026|Live
Vloxyde
Role
Solo — design, infra & code
Scope
4 apps · pnpm/Turbo monorepo

The problem

Personal finance apps and bill-splitting apps never agree. You front dinner for five people, the splitter says you're owed ₱2,400, and your own books show the full charge as your spending — so net worth, category reports, and "who owes me" each tell a different story. Reconciling them by hand is the actual work, and nobody does it twice.

  • Shared costs get mirrored into a second tool that has no idea what your cash did.
  • Category spend is overstated by whatever other people are going to pay back.
  • There's no provenance: a number on a dashboard doesn't drill down to anything.

How it works

Vloxyde keeps one ledger. Balanced double-entry postings are canonical and account balances are rebuildable projections of them, so every figure on the dashboard — net worth, cash flow, gross vs personal-net spend, receivables and payables — carries a scope, a period, and a currency, and drills back to the events that produced it. Money is integer minor units end-to-end; no floats, no silent rounding.

Splitting a cost produces shares and obligations with deterministic largest-remainder rounding. Naming a registered beneficiary doesn't write into their ledger — it emits a proposed debt they accept, map onto a debt they already recorded, or dispute. Consent is the boundary between two people's books.

Every money-moving write is authorized per object, atomic, and idempotent, and identity comes only from the session — a CI gate fails the build if any handler reads a user id off the request.

What I'd change

The correctness core is settled and the app is deployed behind an edge-gated CloudFront distribution on SST. What's left is the part users see: the marketing hero still ships a placeholder where the real dashboard screenshot belongs, and the agent surfaces (an MCP server and a CLI over the HTTP API) need the same polish the web app got.