Concepts and implementation for a model-driven based web application.
Goal is to minimize development for basic applications (e.g. back-office and other data-entry applications).
## Architecture
### Back-end
Components:
- list of models
- each model have a form associated to it
- a form enriches the fields of the model by adding more information to them
- this information includes:
- required/not-required
- HTML element and eventual associated information (e.g. "select", with predefined values, or date-picker, or date-range with default initital and end date)
- each model is exposed via API, in order to allow management of resources
- each form is exposed via API, in order to focus the definition of a model and of the related form on the back-end side
### Front-end
Components are:
- "Form" component - For create or update.
- "Table" component - For retrieve or delete.
Methods of "Form" component are:
- html() - it returns the html for visualizing the form
- save() - it creates a new resource
- update() - it updates an existing resource
Methods of "Table" component are:
- html() - it returns the html for visualizing the table
- retrieve() - it returns a list of resources (using pagination)
- delete() - it delete one single resource
Input for both "Form" component and "Table" component are:
- Resource API endpoint - for example: "http://api.com/resource"
- Form API endpoint - for example: "http://api.com/resource/form"
Type | Html Element |
---|---|
String | select, input, textarea |
Number | select, input |
Boolean | Checkbox |
Object | Recursively, based on: String, Number, Boolean, Object, Array |
Array | List of |
Date | date-picker, date-range |
function | NA |
## TODO
- Make first draft of the main concepts
- Make diagram of the architecture
- Choose elements for the implementation (Yeoman generator, etc.)
- Add first example of implementation
- Abstract and package components
- Publish packages