WindnTrees

WindnTrees CRUDS is a front-end http request, response and related content processing javascript library that integrates with Observers to synchronize data between source and view objects. This follows the create, read, update and delete (CRUD) data extraction, editing, deletion and saving design pattern.

CRUDS utilize CRUDController to extract information from a data source or CRUDSource and processes response with CRUDProcessor to produce typed objects based on content information. Observers take these typed objects and present them in their appropriate views.

This simplifies the process of data extraction, processing and presentation.

Components

CRUDS front-end application is composed of following components:

  1. Views (HTML, Thymeleaf, ASP .NET, PHP, etc. )
  2. Resources (Images, CSS etc.)
  3. Contents (Objects, Entities, Concepts etc. )
  4. Observers (ObjectObserver, ActivityObserver, SearchObserver, CRUDObserver, etc. )
  5. CRUDS (ObjectView, NewView, EditView, SearchView, CRUDView, etc. )

CRUDS separate views, content and content processing functionalities. Users can extract and process data without the information of how its going to be presented by the view technology.

Views

Views are HTML pages produced either as a result of server side scripting language or just static pages served by the HTTP web server.

Resources

Resources are the views related documents, images, style sheets (css) etc.

Contents

Contents are the typed objects that may represent a real world object, concept, entities etc.

CRUDS

WindnTrees CRUDS is a front-end http request, response and related content processing javascript library that integrates with Observers to synchronize data between source and view objects.

CRUDS Application

A CRUD application will consist of all or any of the following components.

  1. CRUDSource
  2. CRUDController
  3. CRUDProcessor
  4. CRUDConsumer

CRUD2CRUD Architecture

WindnTrees implements CRUD 2 CRUD application architecture where server side publish services in terms of CRUD controllers and the client side consumes those services using CRUD controllers.

[Server Side]
CRUDSource(s) --- CRUDController(s) -- CRUDProcessor(s) --- CRUDService(s)

                ||| data / objects / entities / concepts ||| 

[Client Side]
CRUDSource(s) --- CRUDController(s) -- CRUDProcessor(s) --- CRUDConsumer(s)

CRUDSource

CRUDSource is CRUD (create, read, update and delete) interface compliant source of data or information that can listen to CRUD requests and respond with appropriate data or information in specific format. If a CRUDSource is extracting and processing information on behalf of other CRUDSource(s) then its both the CRUDSource and CRUDConsumer at the same time.

CRUDController

CRUDController component operates on top of a CRUDSource and is responsible for data extraction and reporting to other components. Usually a CRUDController deals with a CRUDSource and a CRUDProcessor.

CRUDProcessor

CRUDProcessor component operates on top of a CRUDController and is responsible for data processing and reporting to other components. Usually a CRUDProcessor deals with a CRUDController and a CRUDSource or a CRUDConsumer.

CRUDConsumer

CRUDConsumer is a component that consumes data or information reported by either CRUDController or CRUDProcessor. If CRUDConsumer offer CRUD services to other components then it also forms a CRUDSource of itself.

Dependencies

CRUDS is developed to be open and independent library, its functionality can be extended or customized for content extraction, processing and presentation.

This library depends upon jQuery for making AJAX calls to extract content and utilizes KnockoutJs for presenting processed content.

The library expects server side content response presented in following JSON formats :

{
    content: {},
    errors: []
}

{
    contents: [],
    errors: []
}

Where content is object, contents is a list or array of returned response objects and errors is a list or array of error objects composed of "field name" and "error message".

For further reading click here.