Experimental project

This is a sandbox project, which contains experimental code for developer use only.

Voom is framework wrapped in a Drupal module. Voom is implemented in a way that allows you to interface with core Drupal functionality in a way that will be more natural to developers that are coming from Rails or Java SpringMVC backgrounds.

If you are looking to build an extension to Drupal core, or looking to provide extra functionality on top of an existing module, then don't bother with Voom. If you want to do custom application development, something you would generally consider using CakePHP or Rails for, than Voom is what you are looking for.

Here are some of Voom's features:

MVC: Voom allows you to create applications inside of Drupal using the Model-View-Controller (MVC) paradigm. This encourages development in a way that provides a high degree of separation between models, controllers, and views. For more details see the Wikipedia article on Model–view–controller Unlike generic MVC frameworks, Voom has many Controller and Model features that are Drupal specific, allowing you to achieve a higher level of Drupal integration.

OOP: Voom allows you to code in Drupal using Object Oriented Programing (OOP). Your application will end up being wrapped in a module that Voom will bootstrap.

DI: Voom acts as a small Dependency Injection (DI) engine for Controller, Services, and DAOs in your module. This allows you to write code that is cleaner and can be more easily unit tested.

Annotation Support: Voom allows you to use annotations to do add declaratively add functionality to your application. We currently support annotations for dependency injection, menu support, breadcrumbs, transactions, and security.

Global Transactions: Voom abstracts Drupal's transactional support by allowing you to annotate methods as transactional. This allows you to create transactional boundaries in services that may span Data access object (DAO). If an exception is thrown by the annotated method, then the transaction is rolled back, otherwise it is committed. Transactional methods are committed or rolled back on all databases together. So if an annotated services method makes calls to DAOs using two different database, than a exception will rollback changes to both databases.
* This is not XA or 2 phase commit.

Object Node Mapping Support: Voom allows you to access nodes in your module using objects, in a way that ORM or ActiveRecord developers will feel at home with. Node objects contain annotated variables to establish the mapping. ONM uses only Drupal the View or EntityFieldQuery API's. Direct SQL is never used.

Project information