Finanzas Snake
Finanzas Snake keeps the books for one person or a couple without a database on any server. Every account or transaction is yours, the other person's or shared, and the app covers everything from month to month to loans and their amortization.

How it works
It is a React 19 app. Accounts, transactions, debts and periods live in IndexedDB and are validated with Zod every time they are read. Amounts are stored as text and calculated with big.js, so no cents are lost to rounding.
If you set a PIN, the app derives a 256-bit AES key with PBKDF2 and encrypts all the data with AES-GCM, your AI API key included. Without the PIN, what is stored in the browser cannot be read.
A CSV statement is parsed locally. A PDF one goes to Gemini with your own key, which returns the transactions as JSON. Before you confirm, the app flags duplicates and pairs transfers between your own accounts. The advisor uses Gemini too: it gets a summary of the month and answers in a chat you can export to PDF.
To move your data to your phone, one device generates a ten-character code and the other types it in. They connect over WebRTC with PeerJS and the copy travels from one to the other. Only when the network blocks a direct connection does it go through a relay server, inside the encrypted WebRTC channel.
Loans use French amortization from the nominal rate and the term, and a simulator compares what would happen if you consolidated several debts.