Skip to content
Alexandr Kalinin edited this page Aug 16, 2016 · 6 revisions

Design

“All modules are equal, but some modules are more equal than others.”

The central architecture of SOCRAT was conceptualized keeping one thing in mind - scalability.

Nicholas C. Zakas in his popular talk "Scalable JavaScript Application Architecture", laid a foundation for creating scalable and maintainable single-page application architectures. His ideas were further extended by Addy Osmani in his article "Patterns For Large-Scale JavaScript Application Architecture". Markus Kohlhase implemented a small framework based on a decoupled, event-driven architecture inspired by Zakas's ideas. Another extensible, widely used framework is AngularJs, which implements many similar ideas including modularity, messaging services, and easy testability.

SOCRAT in many core parts is based on these great works and further extends them. The resulting architecture is robust, very flexible, and easily scalable.

SOCRAT follows maximally decoupled, modular architecture, based on AngularJs modules, that are implemented via CoffeeScript classes. AngularJs's dependency injection is used to manage each module components, while modules themselves try to avoid having other modules as direct dependencies, except for core modules. This wiki page explains in detail how to quickly build a custom module.

Clone this wiki locally