In Designer project we use splitting and modularity approach. Editor is an independent module which is built-in to a page. It is linked to UI with public methods. This approach gives us a possibility to scale the solution, easily change application graphic design or use it as the API.
Project is a set of modules and components with MVC architecture. One controller tracks resources distribution inside the application ensuring data transmission from URL or server. Complicated modules are being decomposed to simpler ones, they created with the purpose of their recurrent usage. Publish Subscriber (Mediator) pattern is being used for modules communication.
We use React, React.Backbone, Backbone, Lodash.
Editor has its own independent architecture based on native JS heritage. Editor has its own Publish Subscriber (Mediator). For private methods encapsulation and public interface providing Decorator pattern is being used for editor.js access points.
Modules and collections are created with Backbone. They are singletons. UI elements and editor modules are subscribed on them for data refreshing.
Editor is based on Fabric.js 1.4.3 (latest version). Fabric core is not affected to be able to apply to it coming updates.
Modules connection is being performed with Browserify and Reactify.
Project build is being performed with gulp