Groo is written in PHP 5.1 with Horde 3.1.
The code can be found in the Horde CVS: http://cvs.horde.org/incubator/groo/
You can see Groo running here: http://wanderingbooks.org
At a minimum, Groo should allow a user to:
- catalog her books, by typing ISBNs or scanning barcodes
- invite friends who will have access to her books
- search, tag, comment, recommend and rate books in her collective catalog
- ask to borrow a book
- approve lending of a book
- get e-mail remembering to return a book, or to ask for a book which is overdue
- arrange the exchange of books, either setting up meetings or scheduling drops
The main entities in the Groo system are Users, Books and Items. Users are basically managed and stored by the Horde infrastructure.
What we call a Book in Groo is not a physical object, but rather a certain edition of a work, such as "PHP in a Nutshell, ISBN: 0596100671". An Item is a particular physical instance or exemplar of a Book, such as my own copy of "PHP in a Nutshell".
So Groo has a public database of Books, and private collections of Items, which are the user's book collections. The collections are implemented as Horde shares.