Dinky CMS is a Java Spring Boot Content Management Microservice. It is REST API first.
This project is maintained by schicwp
In modeling content, you define the structure of content objects that you will work with.
For example, if you are working on a news website, you may need a NewsArticle content type to represent news items, and a PressRelease content type to represent non-news information items that will appear on the site.
Content types are specified in a YAML document in the types directory. The YAML document declares a type name, the workflows that govern the content, and a set of fields that comprise the content object.
In the JellyBean example is below:
name: JellyBean
workflows:
  - JellyBeanWorkflow
fields:
  - name: flavor
    type: String
    config:
      maxLength: 10
  - name: color
    type: String
    config:
      allowedValues:
        - red
        - green
        - blue
The this example, the type is name JellyBean, and it is subject to the rules defined in the JellyBeanWorkflow. It has two fields, a flavor and a color, which are both String fields. The flavor field can have a max length of 10 characters, and the color must be one of red, green or blue.
A field must have a name and type and can optionally be indexed or required. Each type of field can have custom options, in a yaml map called config.
An indexed field will have a DB index built to search it. If you plan on searching based on a simple field often, it should probably be indexed ( This does have a per-field storage and write performance penalty though - if you need to search a lot of fields, or do full text searching, consider using the search feature ).
A required field requires a non-null value.
  - name: flavor
    type: String
    required: true
    indexed: true
    config:
      maxLength: 10
Holds a string.
Config options:
| param | description | 
|---|---|
| regex | a regex to validate the string | 
| allowedValues | a list of values that the string may be | 
| minLength | the min length of the string | 
| maxLength | max length of the string | 
Holds an integer.
Config options:
| param | description | 
|---|---|
| min | min value | 
| max | max value | 
Holds a date/time object.
Holds a binary file - this can be used for images, attachments, etc.
This contains a collection of other items. The items it contains can be any other field type.
Config options:
| param | description | 
|---|---|
| collectionType (required) | a field configuration which defines the type of items in the collection | 
Example:
  - name: collectionOfStuff
    type: Collection
    config:
      collectionType:
        type: String
        config:
          maxLength: 49
          minLength: 20
          regex: "[a-z]*"
          
A reference to another content object, by id.
| param | description | 
|---|---|
| referencedType (optional) | the type of object referenced. If not there, any type of object can be referenced | 
See the Extending for information on custom field types.