MorpCC aims to solve several common challenges when doing enterprise web application development, which tend to require capabilities such as:
- Enterprise directory service (LDAP/AD) integration
- User, group and permission management
- Task scheduling for background jobs
- Customizable business rules logic
- Customizable / overrideable components and views to cater to sub/similar use-cases.
- Data might be stored in remote systems or APIs, not necessarily a database.
- Scalability to handle large data processing workload
- Corporate theming
- Mobile-ready / mobile integration
- State tracking and state management
- Fast turnaround time from business requirements to prototype application
- Activity tracking & analytics
- Messages & notifications
MorpCC, and its underlying framework, MorpFW attempts to assist the challenges above through leveraging the component engine provided by Morepath and Dectate to provide:
- Default admin+user UI which can be overridden easily, enabling agility in development by allowing developers to focus more on the data domain model first, rather than the repetive application bootstrapping tasks.
- CRUD with pluggable storage engine, allowing flexibility in writing your own storage implementation
- State engine support, simplifying task of developing stage management of your data objects
- Pluggable user, group, permission and API key management.
- Standardized REST API interface for external integration.
- (TBD) Powerful theming capability through diazo.
morpcc and morpfw design is highly influenced by Plone project. Unlike frameworks such as Django, Pyramid, and Flasks routing which routes to views, morpcc/morpfw routing routes to an object/model publisher. Views are attached to model and goes around with the model. This design gives the framework certain benefits:
- Views and view templates are highly reusable because as long as the model implements the attributes and methods the view queries, the view can be attached to the model.
- Views can be inherited by sub-models. You can create mixin interface classes and attach the views to it. Any models which inherits from the mixin will get the view.
- Views follows model and its sub-models. Whatever path the model is mounted, the views for the model will follow.
MorpCC was built using the following frameworks & libraries to power it. So if you need more detailed documentation on specific components that are not covered here, please head to their documentation
- Morepath - Python web framework with superpowers
- MorpFW - A REST API web framework built on top of Morepath.
- Reg - Dispatching library similar to Zope Component Architecture
- Dectate - Decorator based configuration system
- SQLAlchemy - SQL abtraction library & ORM, used as the default storage engine.
- Chameleon - Templating engine that implements Zope Template Attribute Language (TAL).
- Rulez - JSON based rules engine
- PyTransitions - State machine engine for Python.
- Celery - Distributed task queue and job scheduling library for Python.
- Gentelella - Bootstrap 3 based admin template.