Documentation: In Depth Framework & APIs Guide

The architecture by which framework works is best described by this drawing:

Instead of being a single monolithic framework, in order to maintain efficiency and reusability, Lucinda was designed as an XML-based integration platform of APIs knowing nothing of the other, holding single responsibility in an ability they offer to a web application. Integration consists in redirecting all requests to framework, starting MVC APIs based on XMLs they require and binding them to other APIs and developers code in order to produce a response. This process is achieved through an interplay of two independent APIs that together form the foundation behind framework:

Name Description
Framework Skeleton API Implements the skeleton behind your site, expecting developers to build on top of it in order to have a complete web site. This is the framework itself! GitHub
Framework Engine API Implements logic of binding between API above and other APIs below based on XML tags dedicated to configure it. GitHub

MVC APIs Used

Instead of working with a single MVC API, framework actually employs two MVC APIs (micro-frameworks) working together but knowing nothing of each other: one that operates on STDOUT (normal) flow and handles requests into responses and another that operates on STDERR (error) flow and handles exceptions/errors into responses. Each micro-framework, along with apis it uses, is configured in its own stdout.xml / stderr.xml files:

Name Description
STDOUT MVC API MVC engine behind STDOUT framework, handling requests into responses GitHub
STDERR MVC API MVC engine behind STDERR framework, handling uncaught exceptions (incl. PHP errors) into responses GitHub

APIs Bound by Framework using MVC APIs

Above MVC APIs offer a number of binding points, both programmatically (via extension/implementation) and declaratively (via XML), where framework or user code can hook to. Framework uses this opportunity to bind them with following optional APIs, each adding an ability for your site:

Name Description
View Language API Implements a templating language that acts like an extension of HTML, designed to eliminate PHP scripting in views. GitHub
Request Validation API Implements validation of request based on method and value of parameters received. GitHub
Logging API Implements logging through an abstraction layer that hides loggers' complexity. GitHub
Web Security API Implements most common security patterns employed by web applications. GitHub
Oauth2 Client API Implements communication with an OAuth2 provider that hides vendors complexity. GitHub
SQL Data Access API Implements communication with an SQL server through an abstraction layer that hides server complexity. GitHub
NoSQL Data Access API Implements communication with a NoSQL server through an abstraction layer that hides server complexity. GitHub
HTTP Caching API Implements request & response HTTP caching logic. GitHub
Internationalization API Implements automatic response internationalization & localization. GitHub

Optional APIs to Be Bound by Developers

In addition to APIs dedicated to a web application logic, there are others that can be used by developers without requiring any integration. Based on ability they add to your site, they can be classified as following:

Name Description
SQL Statements API Implements an ability to generate SQL statements programmatically GitHub
Data Types API Implements common abstract data types and data structures for PHP applications GitHub

Share