]> asedeno.scripts.mit.edu Git - bluechips.git/blob - README.rst
Convert the README to rST, since that's what distutils wants.
[bluechips.git] / README.rst
1 BlueChips is a simple finance tracking application designed for small groups of
2 people with shared expenses. It was designed and developed by groups of
3 students who got tired of the headaches of managing lots of little payments
4 between roommates.
5
6 Example Scenario
7 ----------------
8
9 1. Larry lives with Curly and Moe.
10 2. Larry gets the utility bill, and enters it as an expenditure on
11    their BlueChips site. Everyone shares the utilities, so it's just an
12    even split.
13 3. A week later, Moe pays the rent. Curly has a smaller room, so he
14    pays a smaller fraction of the rent.
15 4. At any time, any user can visit the BlueChips site and see who
16    needs to pay who how much in order to settle the books.
17 5. After a few months, Moe has paid for a disproportionate amount of
18    stuff, so the other roommates each make a transfer to Moe, and
19    enter the amounts in BlueChips.
20
21 Additional Features
22 -------------------
23
24 * Support for negative expenses
25 * Uses any authentication mechanism which can set the REMOTE_USER
26   environment variable, including authentication modules supported by
27   Apache, nginx, lighttpd, and others.
28 * Email notifications of changes (optional)
29 * 100% test coverage
30
31 Installation and Setup
32 ----------------------
33
34 Install ``BlueChips`` using easy_install::
35
36     easy_install BlueChips
37
38 Make a config file as follows::
39
40     paster make-config BlueChips config.ini
41
42 Tweak the config file as appropriate and then setup the application::
43
44     paster setup-app config.ini
45
46 Host the application behind an authentication layer which sets REMOTE_USER.
47
48 Apache Configuration
49 --------------------
50
51 The recommended deployment platform for BlueChips is Apache, mod_wsgi, and any
52 Apache module which provides authentication. Here is an example vhost
53 configuration::
54
55     <VirtualHost bluechips.example.com:80>
56         ServerName bluechips.example.com
57
58         WSGIScriptAlias / /var/www/bluechips.wsgi
59         <Directory /var/www>
60             Order deny,allow
61             Allow from all
62         </Directory>
63
64         <Location />
65             AuthType Basic
66             AuthName "Example BlueChips Site"
67             AuthUserFile /etc/apache2/passwords
68             Require valid-user
69         </Location>
70     </VirtualHost>
71
72 The ``bluechips.wsgi`` wrapper script looks just like::
73
74     from paste.deploy import loadapp
75     application = loadapp('config:/var/www/ssl/config.ini')
76
77 Acknowledgments
78 ---------------
79
80 BlueChips is the latest in a long line of software to make managing
81 group finances easier, and would not be possible without the
82 intellectual inspiration of those predecessors.
83
84 CUTCAT's `accounting software`_ started the trend of
85 software-based accounting mechanisms. It inspired a re-implementation
86 as a curses script by `Nelson Elhage`_, which introduced the
87 notion of "pushing expenditures" to simplify transfers. The algorithm
88 used in BlueChips for settling the books is directly cargo-culted from
89 Nelson's implementation.
90
91 .. _accounting software: http://cutc.at/accounting-software.html
92 .. _Nelson Elhage: http://nelhage.com/