Rich Data Model

Using SQLAlchemy as ORM let us model application logic in OOP style without losing rich analytical capabilities of RDBMS. Our Model objects supports all dictionary-like operations

Data Access Object

Data access objects (DAO) make CRUD operations extremely simple. Saving and updating nested object hierarchies involving any type of relationship are performed in a single step, including data validation and sanitizing. The query methods can generate complex queries with little code

Service Layer

Service Layer provides a higher level of abstraction for communication among different components. Common tasks like building query from user input, pagination are made extremely simple. The coding conventions followed in the service layer helps keep controller code simple and maintainable

Generic Relation API

Our generic relation API enables developers to create relationships among objects without modifying existing tables. The related object can evolve without ever needing to modify existing code. Many application-wide common functionalities could be implemented using the Generic Relation API

Fine Grained ACL

Our ACL is extremely flexible, with support for Permission Group, Role and Resource objects. If permission for a resource is revoked, all means of accessing that resource in the application removed immediately without needing to log-out the user

Dependency Management

Built-in resource dependency management ensures user access to inter-dependent resources, reducing risk of false access denied errors

Seamless Integration

Our framework makes it possible to use any Python objects as data source for BIRT reports. The complexity of interfacing with the external report server is abstracted away from application developers

Declarative Data Export API

Python objects are used as BIRT data source through XML serialization. Our declarative data export API makes writing serializers for complex objects extremely simple

Dynamic Column Control

Columns in reports can be dynamically controlled, so the same report design file can be used to produce different reports for different data sets

Extended template blocks

Our extended block tags let you chain block contents across multiple templates when necessary. The template inheritance behavior of django remains untouched. So you can use both template inheritance models simultaneously

HTML Form Library

The HTML form tag library eliminates boilerplate code from templates. HTML code for complex forms can be generated in few lines of template tags

Useful collection of filters

Our template filter library contains many useful filters for common web development tasks and more humane representation of data

Dependency Management

Our static content manager ensures that related CSS/JS files are always loaded in proper order which reduces the dependency at any time.

CSS/JS Optimization

CSS and JS files are combined and minified with YUI compressor to reduce page loading time and bandwidth usage. Parallel build support results in greatly reduced build time in multi-core machines

CSS/JS versioning

File modification time based CSS/JS versioning ensures proper browser cache refresh after application update is applied in production servers