Yootles is a financial ledger system for tracking IOUs and loans between friends and family. Originally written in Scheme around 2005, it now uses PHP, JavaScript, and Mathematica to provide a collaborative ledger system with automatic interest calculations.
- Collaborative ledger editing via Etherpad
- Real-time balance updates
- Automatic interest calculations
- Per-user transaction histories
- CSV export of transactions
- Multiple interest rate support
- Full transaction history view
- PHP web server
- Mathematica (for ledger processing)
- Access to padm.us (for Etherpad integration)
ledger.m- Main Mathematica script for processing ledgersnightly.m- Updates transaction histories nightlyledger.php- Main ledger view handleryootles.php- Ledger processing endpointlongpolling.php- Real-time update handleryootles.js- Client-side JavaScriptledger.css- Stylestemplate-snapshot.txt- Template for new ledgers
; Example ledger format
account[ali, "Alice", "[email protected]"]
account[bob, "Bob", "[email protected]"]
iou[2023.12.25, 1000, ali, bob, "Christmas loan"]
irate[2023.01.01] = .05 ; 5% interest rate/{ledger}- View a ledger/{ledger}/transactions- View transaction history/{ledger}.csv- Download CSV of transactions/{ledger}/{user}- View user's transaction history
Use the deploy script to update the live site:
./deploy.shRequired cron entries for nightly updates:
00 6 * * * $HOME/prj/yootles/fetchlist.m
05 6 * * * $HOME/prj/yootles/nightly.mAdditional documentation available in knowledge files:
knowledge.md- Overview and core conceptsknowledge.data.md- Data storage and file formatsknowledge.mathematica.md- Mathematica processing detailsknowledge.api.md- API endpoints and routingknowledge.ui.md- UI components and behavior
- Bethany Soule - Original co-author (Scheme version)
- Daniel Reeves - Original co-author and maintainer