Commits
When the server auto-generates the ledger id, the client now
reads it from the response instead of using its own client-side
id. This ensures id consistency between client and server.
Instead of returning 400 when the client omits or sends an invalid
id, the server now generates a UUID v4. This eliminates the 500/400
failure path entirely — the server is the authority for id assignment
when the client doesn't provide a valid one.
- Validate id is a valid UUID v4
- Validate name is non-empty and within max length (200 chars)
- Validate encryptedData is non-empty base64 within size limit (1 MiB)
- Return 400 with clear error message instead of cryptic 500
Initial release. Splint is a self-hostable debt settlement tracker
with end-to-end encryption, no account required,
and a visual graph of who owes whom.
Added:
- End-to-end encryption (AES-256-GCM, keys in URL fragment)
- No-account sharing via invite links
- Debt settlement dependency graph
- Self-hostable with Bun + Postgres
- Offline-first web client (React + Dexie.js)
- Containerized deployment (Podman Compose)
- Drizzle ORM migrations
Initial release. Splint is a self-hostable debt settlement tracker
with end-to-end encryption, no account required,
and a visual graph of who owes whom.
Added:
- End-to-end encryption (AES-256-GCM, keys in URL fragment)
- No-account sharing via invite links
- Debt settlement dependency graph
- Self-hostable with Bun + Postgres
- Offline-first web client (React + Dexie.js)
- Containerized deployment (Podman Compose)
- Drizzle ORM migrations