We will provide an overview of the architecture and design of a lightweight content management system built on MongoDB. Ideally suited for managing social content -- creating a blog site, a discussion forum, or adding user generated content to an existing website -- Crafter Social is an open source Java app built on MongoDB. Our talk will focus on design considerations and MongoDB's unique features that make it perfectly suitable as a highly-scalable, multi-tenant social object store. We use MongoDB to store social objects of all types: user comments, threaded discussions, blog entries, and more. The document-oriented approach of MongoDB provides the foundation for social content management applications that need high-performance, high-scalability, and rapid speed of development. We also cover our design approach for user profile management, which supports configurable (on-the-fly) profile attributes, roles management, and pluggable authentication.
The presentation discusses our solution which provides social content management built on top of MongoDB. When we talk about Social Content, we mean blogs, forums, comments, ratings
The specific area we are addressing is enhancing your existing websites with UGC. 1. Add content to all of your websites. 2. It shouldn’t matter what type of website it is PHP/Java/Grails/.NET etc.
Support the most common use cases Blog engine, forums, commenting, like, flagging content, moderation, auditing
Multi-tenant - Multiple sites can be managed in the same system - Blogging website, product
Scalable - horizontally scalable - nature of the content => highly scalable - a lot of users using the different sites accessing/updating the UGC
Administration Security e.g. granting access to users to the site, or creating users 2. Secure the generated content i. Authentication ii. Authorization
Minimal Integration UGC is draped over an existing site For example, your website could be written in PHP, Grails, Java, and UGC capabilities are a draped over using JS
Use different image
Responsibilities of Crafter Profile 1. User profile services 2. Authentication 3. Tenant services What’s important to mention is that authentication services can be delegated in enterprises that have users repositories Profile services augment but do not necessarily replace existing user repositories (even though they can if desired). The functionality is there. Base profile consists of a first name, last name. The attributes associated with a user profile are schema-less. Easy to drape a richer set of user attributes relevant to the UGC system.
Crafter Social handles all the actions related to user generated content. For example, you have a product, (a particular book), on your site and you would produce something and attach it to the book. This would be the root ID for the user generated content to hang off of. Then a user will comment on the book and other users will like the book and so on. And these would also be user generated content. These are the type of scenarios that are being handled by Crafter Social.
Together Profile & Social provide a standalone solution.
Use different image
UGC = element or item, attached to something or is the root Description of UGC - blog, wiki, forum topic as root
Social communicates with profile for authentication, roles and other attributes Social doesn’t know what the application is. It could be ratings, wiki etc. Profile & Social web applications work in their own databases - potentially two different mongo installations Headless RESTful applications - easy to integrate with - stateless
JQuery Client - ootb user experience built on our API - Use directly, or as a reference
Provided profile client as a reference, but you can build your own admin client with Ruby/PHP etc.
Schemaless storage of content makes it easy to store these UGCs. i.e. fits the use case Document-oriented storage => flexible schema - different documents can have different structures, beneficial for varying types of UGC - base profile properties with ability to easily add custom properties
An example of where this would be important is with ratings.
=> Scalable In the same database, so easy to back-up and restore
Multi-Tenancy - Each profile is associated with a particular tenant - Can have 1 to many tenants in the DB A target is any object in system that can attach UGC to. For example, a shoe or a book people are going to rate.
SSO infrastructure across these two systems and any other system that relies on Crafter Can use spring security provider in any application that uses Java Spring Security Provider - extension of the profile project - Initial authentication is carried out against the profile application - After that point a ticket is passed to the social application
Authorization - A user is assigned a role in the Profile Admin application - The roles available are stored in the role collection in the database - Additional application specific roles can be created - For each UGC created, a list of roles for each action [create, read, update, delete] can be passed in - If no roles are passed in, default roles are se
Blog Commenting on blog Link to down application Repeat open source