Over on the Infinite Thinking Machine, Wesley Fryer has a blog post about creating a Netflix-style website for readers, with an emphasis on COPPA compliance for readers under 13.
Here's how I'd go about building that site using Drupal.
The main functional requirements:
These requirements are pulled and paraphrased from Wes' post; any that I have added are italicized.
COPPA compliant -- no personal data collected from minors without the prior consent of an adult;
Readers can rate books they have read;
Readers can create lists of friends; these "friendships" can be one way, or reciprocal;
Readers can write reviews on books; these reviews can be shared publicly, or privately between friends;
The site should recommend books to readers based on their likes and dislikes of other books;
Readers should be able to see what their friends are reading, and any reviews/recommendations of their friends;
Readers should be able to keep a reading log on the site; this reading log should have the ability to be public or private;
Readers should be able to form public and private groups/communities.
There are other features that will need attention, of course; for example, a site like this will require a detail-rich user profile page, and pages for recent recommendations, featured books, featured readers, etc.
Building the Site:
As a start, in addition to Drupal core, we'll need the CCK, Views, and Organic Groups modules. These modules will provide the main functionality to power the site. Other modules will be discussed in context below.
For user profiles, we'll use the Bio module.
For book ratings, we'll use the VotingAPI and the FiveStar modules.
For friends, we have a few different possibilities, and the best choice for the specific site would require some module evaluation. The shortlist: Buddylist (the original module of this type in Drupal, which we have used and liked in the past); Buddylist2 (an upgrade of Buddylist that looks promising, but it is younger code and we have yet to try it); and the Friend and Notice modules (also newer than Buddylist. Another possibility is the User Relationships module, that came out around the same time as Buddylist2. The "best" solution here will require some analysis of the existing code, cross-referenced against some precise descriptions of the desired functionality. This is also a place where the right design and UI is critical.
Views of friends recommendations, reading lists, etc: the Views module.
Reading log: CCK, with access control via the Coherent Access module.
Book reviews: CCK, with access control via Coherent Access
COPPA: this requires some custom development. We actually have some COPPA code that we worked on a while back that we need to dust off, clean up, and release. At its most basic, we need to branch the registration process, with all users under 13 directed to get their parent, or (alternately) to enter their parent's email address. The specifics would need to be vetted with legal counsel.
Content Recommendation: this is where things get interesting, and we have a few options. The shortest route could be dusting off the Content Recommendation Engine. We could also get some basic recommendations by looking at content a reader has reviewed favorably, looking at other readers who have reviewed that item favorably, and then drawing from their lists of recommended items. Also, creating lists of similar items when looking at both books and book reviews would be a nice feature to have. In short, content recommendation would also require some custom development, with the Content Recommendation Engine, the Similar by Terms module, the Similar Module, and the Memetracker all having code that could be useful/relevant for this project.
Public and Private Communities: Organic Groups, with Views to customize how content is presented within groups.
A list of the modules mentioned in this post:
Content Recommendation Engine
Similar by Terms
This is a quick overview. As with any implementation, the details would need to be clarified to the point where we could generate solid design mockups of the key screens. But, given what I've seen of the functional requirements, Drupal would provide an ideal platform for this functionality. Building this site in Drupal, from open source components, and documenting the process would allow any organization who wanted a site like this to create it; or, several schools could join together to use a common space.