Architecture

Description

An overview of mFabrik Web and Mobile architecture.

Introduction

Integrated products

mFabrik Web and Mobile consist of several integrated products and services. The architecture is flexible, allowing the switching of the parts in the case there exist requirements to integrate with different systems.

mFabrik Web and Mobile content management is built on the top of Plone® content management system.

Plone is enhanced with several add-on modules which extends it basic web functionality with mobile, SMS, email and video features.

Video and audio management and distribution is handled by Apex Media service which is provided as software-as-a-service from mFabrik server farm.

SMS messaging services are provided by Apex Messaging solution which is a standalone service integrating to different carrier SMS gateways.

is divided to several Python packages, packed as Python eggs. Egg files are distributed through Python egg index services, like Python Package Index (PyPi). By dividing the product to small components we achieve

  • Better code reuse. mobile.* packages do not have Zope dependencies and can be used with any Pytohn CMS.
  • Release early, release often: Bug fix releases can be rolled out for individual packages.

Some of the functionality is built on existing Python libraries (vObject, lxml, Python Imaging Library).

Architecture overview

../_images/architecture.png

Architectural overview

Python run-time

Plone 3 CMS is built on the top of Python runtime. Python is a remarkably powerful dynamic programming language that is used in a wide variety of application domains. Specifically, Python version 2.4 is used (will be changed in Plone 4).

Generic mobile.* libraries for Python

mobile.* namespace packages can be used with any Python project. For example, mFabrik team has succesfully used the same codebase for Django CMS and Ploen sites.

mobile.sniffer

../_images/sniffer.png

Handset detection backends.

  • Abstraction layout for different handset database abstraction
  • Brand name recognizition regular expressions for mobile redirects two provide two pass user agent detection
  • Pluggable backend mechanism
  • Currently supports following handset databases: Wurfl, DeviceAtlas, Apex Vertex, WAP profiles.

mobile.heurestic

Condensed years of experience dealing with mobile phone complexity. This package contains rules-of-thumb how to generate HTML compatible for different user agents.

  • Serving correct content type and docstring
  • Phone number links
  • Openining a GPS navigator / maps application
  • Downloadable vCards

Internally uses vobject Python module.

mobile.htmlprocessing

mobile.htmlprocessing provides utilities to sanitize arbitary HTML for mobile output.

  • Transform HTML to XHTML
  • Rewrite <img> tags
  • Clean up untrusted HTML code

Internally uses lxml Python module.

Plone specific packages

gomobile.* provides Plone specific packages. The packages are split so that you need to install only packages and modules relevant to your site use case e.g. no multichannel publishing if mobile-only site is being built.

gomobiletheme.* namespace is reserved for mobile site theme products.

gomobile.mobile

This package provides Plone core mobile functionality.

  • Mobile behavior: mobile specific settings for Archetypes content
  • Mobile add-on layer and theme layer
  • URL mapper between web and mobile site
  • Mobile site redirector
  • Preview action and mobile simulator CSS and JS code
  • Tracking and analytics
  • Content type and docstring abstraction
  • Plone specific HTML processing and mobile image resizer
  • Mobile folder listing
  • Documentation in Sphinx format

gomobile.convergence

Multichannel publishing options.

  • Multi-channel publishing behavior for Archetypes content
  • Set folder/page to be available in web and mobile only
  • Override field values individually e.g. different body text for a page on web and mobile (gomobile.convergence.overrider)
  • Special navigation code supporting multi-channel publishing

gomobiletheme.basic

Default mobile site theme which can be extended for your specific needs.

See more about theming.

gomobile.imageinfo

Helpers to open and read various kind of persistent image objects used in Zope environments.

gomobile.supporter

Add mobile support for various Plone add-on products which are not part of Plone core.

gomobile.buildout

Buildout recipes for repeatable installations.

  • Include Go Mobile with your Plone set-up
  • Checking out the source code
  • Making releases.

mfabrik.behaviorutilities

Use plone.behavior <http://pypi.python.org/pypi/plone.behavior> content extension mechanism with Archetypes http://plone.org/products/archetypes<> content type subsystem.

collective.fastview

Helper methods for Plone and Grok views and viewlets.