CommonFloor.com is one of India’s Leading Real Estate Portal to a massive amount of property listing across the country which offered home seekers, sellers and real estate professionals an extensive online real estate ecosystem. Apart from a robust search mechanism the portal also maintains a vast repository of well researched content on a host of property related matters ranging from legal issues to maintenance, facility management or home insurance among many others. One of the main problem they were facing was how to repurpose the content across their core products which was property data, as well as making it available over different platform e.g. iOS app or Android app where user experience was quite different compared to desktop devices.

Why Drupal was chosen:

Initially the client team were a bit reluctant on using Drupal to serve the content. They were more inclined towards making use of Wordpress itself for which they had even internal team available., But once they saw the proof of concept using Drupal as backend and Angular for consuming the content  and how easy & fast it would be for the team to create new service as well as customized existing services, they were really impressed. Flexibility to change was need of the constantly innovating product team. The level of scalability, extensible environment of Drupal and out of the box feature of the Services module, which became the biggest pillar of the project, made them sure about using Drupal as their platform of choice for their content repository application.

Describe the project (goals, requirements and outcome)

Project Goal

The goal was to create an application which will act as  a repository of the content without negotiating on the current usability, content creation workflow and design structure of the site. Also they wanted the contents to be reusable across other platform when requested.

Project Requirements:

Decoupled Structure

Drupal would be used as a content server to store the contents and provide the data when requested using Web Services.

Per User Dashboard

In order to maintain the contents and revisioning of the contents a clean, compact and easy to use administration dashboard was required to monitor the workflow.

Content Migration

The existing portal was running on Wordpress. So a data migration was required to transfer all the contents from Wordpress to Drupal along with their respective SEO tags and category. Apart from contents migrating the users was also a priority.

Project Outcome:

Custom REST APIs to serve data

In order to meet the complexity of the data request custom REST APIs were created using Services module. For Service authentication the Service API Authentication was used. The response time of the services was kept below 300ms for the complex APIs and below 150ms for listing APIs.

Wordpress to Drupal Data migration

The existing portal in Wordpress had a huge volume of data that needed to be migrated to the new Drupal 7 site. Since Drupal 7 already have a module for Wordpress to Drupal migration so content migration was completed with ease including the tags, categories,comments and users associated with the contents. But the module doesn’t support migration of data from the custom fields in Wordpress which was used to hold the metadata of the contents. So, to migrate the custom field, a custom script was written to parse the xml generated for migration and extract the metadata from the contents and attach it to the appropriate contents.

An easy to use Working Environment

Since the portal was going to be heavily used by content writer and editors the theme was kept simple. As there was no client end so a single theme was used across the site as both admin theme and default theme to maintain the consistency of design. Panels was used heavily to create customized layout for content viewing and node forms.

Content Autotagging

Content Autotagging feature we created for this project was quite unique. This allows the author to fill the tags and category fields on submission of the node and subsequently module function read the title and body of the fields to match against the respective vocabularies and if there is a match add the term to the field.

Key modules/theme/distribution used:

  1. Services
  2. Wordpress Migrate
  3. Panels
  4. Workbench Moderation
  5. Features
  6. Shiny

Why these modules/theme/distribution were chosen:

  • Services was one of the key pillar of the project because of the decoupled architecture. Custom scripts was written extending the Services module to create improvised RESTful API to expose hefty data in JSON format ready to be consumed.
  • The out of the box data migration of Wordpress migrate module complete 90% of the migration task on one click.
  • Panels accompanied with views was the key ingredient to display the content pages and node forms. Panels was used to provide a clean and compressed node form for the content authors without compromising the authoring experience.
  • One of the essential for a content authoring bundle is the capability to moderate contents by following a workflow and ability to view the moderation stages across the whole moderation transition cycle. Workbench moderation was the perfect fit for this scenario. The modules usability of views and highly configurable nature made it easy for us to have distinctive user dashboards according to the user roles.
  • Features has been a great option for Drupal developers when it comes to deployment to bundle the configurations, views, panels, etc into plugins and keep them in code.
  • Shiny was used as the only theme across the site to maintain the dashboard design consistency for content authors, seo managers as well as content managers. Alterations of the theme stylesheet was done to make it more user friendly so that it fits in both ends.

Community Contribution

  • Workbench Notifier - Extends Workbench moderation and provides a way for administrators to configure notification transitions based on user roles and notification messages between those transitions.
  • Auto tagging suggestions - Module provided the functionality to fill auto complete fields from any other text area fields like body. All available terms in body or selected fields will be filled in selected destination term field.

Read the case study on Drupal.org