Architecture

PermeAgility is designed to minimize the layers and dependencies used in most application frameworks.  This allows for the maximum integration using the simplest architecture possible. 

Architectural Principles

Consolidation of concerns

While many software stacks employ separation of concerns very well, they fail to properly consolidate concerns into focal points of control (example: configuration files requiring special tools to edit them, multiple layers of security with many of them turned off, dependencies on multitudes of software libraries).  PermeAgility stores all information related to an application in one place (the database) and provides a web UI to access and manipulate all of it. Examples of consolidation in PermeAgility:

One model, one view, one controller

The database is the model, the browser is the view, and your program is the controller - no separate structure objects, getters, setters, mappings, models or interfaces/implementations to maintain

All configuration in database

The configuration is extendable so that an application can integrate with the configuration data

HTTP server implemented in one class

Server class uses the Security class to load a user/capability cache from database which the server uses to authenticate and authorize all requests 

All database related interfaces are consolidated into three simple classes

(Database, DatabaseConnection, QueryResult) - very simple

Universal data management is delivered by the Table class

which can be extended by custom applications

Build an entire application in one class

Seriously, see the plus modules sources for examples

Separation of concerns

PermeAgility also supports separation of concerns where appropriate:

Dynamic stylesheets

Presentation styles and layout is driven by a single cascading style sheet maintained in the database and switchable with other stylesheets on the fly

Simple JavaScript components

Uses simple JavaScript, JQuery, and AngularJS components for UI controls and consistent presentation.  Allows for future plug-in UI components that can be applied universally

"Tight integration allows PermeAgility to do it all with less than 10,000 lines of code"