General
We built a Splitwise alternative where the link is the account. Here is what that forced us to design
0 views

Draft skeleton. Rewrite in your own voice before publishing.
The constraint
If your friends have to make an account, they won't. So the room URL had to be the whole product: the invite, the login and the data key in one string.
What that forced
The link is a bearer credential. 16 random bytes, base64url, appended to a readable stem. No recovery, no owner override. Treat it like a key.
Money as strings + BigInt. A Number never touches an amount except for display. Equal splits hand out remainders deterministically. A property test runs 300 random rooms through the client derivation and the server fold and expects equality.
FX locked at entry. Editing an expense never re-prices history. Rates are fetched through a same-origin route so the browser never talks to a second host.
Offline without conflicts. New expenses queue and replay; edits and settlements need a connection. We chose fewer features over a CRDT.
Realtime that leaks nothing. SSE sends "something changed", the client refetches. The stream itself carries no room data.
No egress in prod. Containers can't reach the internet; push, FX and the receipt model go through an allowlisted proxy.
The catch, written down
Split is free with no paid tier and is top-of-funnel for Peanut, a payments app. We wrote the limits into STEWARDSHIP.md: no nags, no modals, no preselected payment option, no feature gates. AGPL so a hosted fork stays open.
Repo: https://github.com/peanutprotocol/peanutsplit · Try it: https://peanutsplit.com
Read original: https://dev.to/hm/we-built-a-splitwise-alternative-where-the-link-is-the-account-here-is-what-that-forced-us-to-1pho
PreviousWe Built a DevRel Knowledge BaseNextWe built a support widget with no human handoff. Here's why that's the honest version.
Related posts
SLAC researchers find proof of altermagnetism, a new magnetic phase
0Hacker News
Ask HN: Does anyone have a contact with Cleveland-area Ham club?
0Hacker News
GUI64 – GUI for the Commodore 64 running on top of the built-in ROM
0Hacker News New
I checked whether my laptop is wasting RAM
0Hacker News New
3rd-party statistically-correct benchmarks comparing WebAssembly runtimes
0Hacker News New
Au High Court to consider whether under-16s social media ban is unconstitutional
0Hacker News New