119


The Bene Best CMS is a next generation websites publishing platform which aims at increasing comfort and productivity of publisher, as well improving visitor experience.

The project was founded to overcome limitations of existing editing software, especially to arrange text and media into newspaper-like columns, while switching it to vertical layout on mobile devices.

Backend

Utilizing document oriented database made possible managing complex data structures at ease. Instead of having hundreds of SQL tables, thanks to MongoDB there are far less number collections required to build up the system. Not to mention that to retrieve complex documents only one query need to be executed if document does not contain DB References. Even then, the references are automatically retrieved. Additionally similar document types can be stored in the same collection, resulting in even more complex data to be stored easily, resulting in more intuitive user experience.

MongoDB used with Mangan and it's companion library Manganel, allowed to build updated in real time full text searching with transparent API. That is, when using data without searching the Mangan handles querying MongoDB, however when searching is requested, the MongoDB conditions are translated into ElasticSearch and optionally scored by relevance.

Frontend

The data retrieved from database, either from MongoDB or ElasticSearch is transformed into JSON objects and bound to underlying views with KnockoutJS.. The Knockout JS provides lightweight Model-View-View-Model implementation, even when evaluating thousands of bindings the application works flawlessly and browser resource usage is steady. To make development more robust, the JavaScript view models are generated from PHP models, resulting in error free and 100% compatibility between server side and client side models. Not to mention of how many lines of code are maintained automatically.

For pages that need to be indexed by public search engines, the HTML is generated directly by PHP. Except for what is visible to visitors, the generated HTML contains meta data used by social networks and search engines.