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
++ High-level use cases
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
ask to borrow a book
approve lending of a book
After the basics are done, we also want our user to be able to:
search, tag, comment, recommend and rate books in her collective catalog
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
++ Basic entities
The main entities in the Groo system are Users, Books and Items. Users are basically managed and stored by the Horde infrastructure.
+++ Books x Items
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". Eventually Items will also refer to DVDs, LPs, CDs.
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.