/* and inferior beverages */
A digital beverage money pool (a kitty
) that enables you and your peers to have a shared coffee drinking experience—and more!
> brew tap jannschu/coffee \
https://codeberg.org/jannschu/coffee.git
> brew install --HEAD jannschu/coffee/coffee
> coffee --helpEach user has an account with a balance. The balance is increased by depositing money into the pool, and decreased by drinking beverages! If supplies start running low, new items are bought from the money in the pool. Track multiple beverage types (coffee, tea, mate, etc.) with individual pricing.
To track how much you drink you can use an old-school table on a piece of paper and tally marks (the PDF is generated for you) — or you use the command line interface.
The tally marks are counted and then entered by the money pool manager. The command line interface on the other hand liberates each coffee drinker by providing extended functionality, for example direct access to the personal log or the ability to transfer money within the money pool to another account.
Only with my coffee tooling completely implemented in Rust—the best programming language there is—I can sustain my blazingly fast coffee drinking lifestyle. Next stop, blockchain!
Install via Homebrew (macOS and Linux):
brew tap jannschu/coffee https://codeberg.org/jannschu/coffee.git
brew install --HEAD jannschu/coffee/coffeeAfter installation, configure the server URL. If you are reading this page from the server, the URL to use is shown below:
coffee config set server-url <URL of this page>You may then use the following command to register one consumed beverage (maybe alias this in your shell):
coffee sipIt will ask you for your LDAP password. The authentication is valid for one week. Your account must be added by the money pool manager once.
By default, this registers one coffee. You can specify:
coffee sip 1.5coffee sip --beverage teacoffee sip --beverage mate 2To transfer money use this command:
coffee transfer <amount> <receiver>Also check out coffee log and coffee balances.
Some accounts can be assigned a superuser role. This role is necessary for certain actions. A user can be made superuser only via SQL currently. This guide will be extended once the workflow for this is finalized.
To add a new account use coffee add <name>.
By default, each site has a coffee
beverage. You can add more beverage types:
coffee beverage add tea 1.50
coffee beverage add mate 2.00
coffee beverage listYou can also edit beverages (rename, change cost, activate/deactivate):
coffee beverage edit coffee --cost 0.90
coffee beverage edit mate --deactivateWhen users consume beverages, money is transferred to an account called sales
. This account tracks all beverage revenue. When new supplies are bought for the group, the items are sold
to the sales account by transferring money from the sales account to the user's account that bought the supplies:
coffee transfer \
--from sales \
--comment "2kg coffee" \
<amount> <user>If someone registers their beverages on the paper list, the information must be transferred to the database:
coffee sip -a <account> <number>
coffee sip -a <account> --beverage tea <number>To register cash being taken from the money pool or put into the money pool use:
coffee cash -i <amount> <account name> # put money into the pool
coffee cash -o <amount> <account name> # hand money outThe tool supports storing cash at multiple locations, called places
. You may specify a place's name other than the default name when registering cash flows using -p <place name>. An example for a another cash place would be the manager's bank account or PayPal. Cash can also be transferred between places.
Generate PDF sheets with tally marks for specific beverages:
coffee sheet # All active beverages
coffee sheet -b coffee,tea # Only coffee and teaThe tool can alternatively also be used to manage a local money pool, without a server. This stores the database locally. To get the standalone version, remove the server-url entry from the configuration file, which can be located using coffee env.
Be aware that other users can not interact with a standalone version using their command line interface.