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.sh
Required cron entries for nightly updates:
00 6 * * * $HOME/prj/yootles/fetchlist.m
05 6 * * * $HOME/prj/yootles/nightly.m
Additional 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