Kuzzle Spring Release 2019

Version française

 

Hello everyone!

Just before the beginning of summer and holidays, here are the latest news from Kuzzle. It's about Kuzzle Core (Vault, refreshToken ...), Admin Console (column views, port SDK JS 6 ...), plugin S3 and a React boilerplate.

 

Kuzzle Core

Kuzzle is now in version 1.8.0. This version brings many new features to develop your projects even faster!

You can consult the latest release notes in detail on Github.

 

Vault Secrets for API Keys

Kuzzle now includes a tool to manage the secrets of your application. Now you can share your API keys with your fellow developers and devops directly by versioning them in your repository!

These secrets are of course encrypted, so the decryption key is the only secret to share with your colleagues, everything else is stored securely.

The secrets stored in this way are then exposed by Kuzzle in the context of the plugins.

First create a file with your secret inside:

 

{
  "aws": {
    "secretKeyId": "lfiduras"
  },  
  "cloudinaryKey": "ho-chi-minh"  
}

 

Then generate the file with encrypted secrets:

 

./bin/kuzzle encryptSecrets config/secrets.json --vault-key strongpassword

 

{
  "aws": { 
    "secretKeyId": "536553f3181ada6f700cac98100f1266.3181ada66536553f"
  },
  "cloudinaryKey": "f700cac98100f1266536553f3181ada6.6536553f3181ada"
}

 

Encrypted secrets file will automatically be loaded at startup.

 

./bin/kuzzle start --vault-key strongpassword

 

See the documentation and associated PR.

 

New API method: auth:refreshToken

This method refreshes a connection token without re-entering the user's credentials.

It is also available in the Javascript 6 SDK.

See the documentation and associated PR.

 

New API method: bulk:write and bulk:mWrite

These two new bulk controller methods allow you to write one or more documents directly to the database.

These low-level methods do not pass through the document validation system, do not trigger real-time notifications and Kuzzle metadata are not added to documents.

 

Thanks to it, it is possible, for example, to create a document with arbitrary metadata.

See the documentation of write and mWrite and the associated PR.

 

Support of Elasticsearch's dynamic mapping policy

Those who have worked with Kuzzle know that once the type of a mapping has been defined, it is impossible to change it.

This can cause problems when new fields are introduced when they have not been defined. By default, Elasticsearch will try to guess the mapping of these new fields: it is the dynamic mapping policy.

 

It is now possible to define Elasticsearch's behaviour in the face of these new fields:

 

  • try to guess the type of the field and update the mapping (default)
  • do not modify the mapping
  • reject the introduction of the field

 

Collection metadata support is now also available.

See the new page dedicated to mappings and the associated PR.

 

Support for Redis 4 and 5

Kuzzle is now compatible with Redis 4 and 5. Actually, we didn't do much... Redis developers are extremely careful to stay backwards compatible.

We now use Redis 5 by default but older versions will continue to be tested in our nightly builds.

 

Plugins wildcard events

Plugins now support wildcard events. This feature allows developers to use a hook or pipe on a whole family of events.

For example, to modify the response returned by each action of the document controller it is now possible to use a single pipe with wildcard instead of declaring a pipe for each action:

 

this.pipes = {
  'document:after*': 'addMetadata'  
};

 

See the documentation and associated PR.

 

Configuration of CORS headers

It is now possible to finely configure CORS headers to best meet the needs of client applications such as SPA and PWA.

In particular, the headers Accept-Control-Allow-Methods and Accept-Control-Allow-Headers are now configurable in the Kuzzle configuration file.

See the associated PR.

 

Admin Console

As you may have noticed, we have worked a lot on the Admin Console.

Many fixed bugs and improvements have been made in recent months such as adding "Refresh" and "Replace" buttons or displaying dates in a readable format.

We also ported the Admin Console to the latest version of our Javascript SDK. The Admin Console is therefore an excellent model of a complete Single Page Application developed with Vue.js and Javascript SDK.

 

New column view

A new view is available for your data: the column view.

This view is fully customizable, it gives you the possibility to select the fields you want to display for each document.

 

new-customizable-column-view

 

See the associated PR.

 

Import and export of environments

The different Kuzzle environments that you backup with the Admin Console are stored in the local storage of your browser.

This means that if you change browsers, or use a version of the Admin Console hosted in a different location, you lose all the environments you have backed up.

This feature allows you to export the environments registered for one version of the Admin Console and import them into another.

It also gives you the opportunity to share your environments with your colleagues, simply by sending them a file.

 

 

Import-and-export-of-environments

 

See the associated PR.

 

Plugins

As you know, we already maintain some plugins for Kuzzle.

We have decided to develop new plugins that address very common issues for our users.

The functionalities provided by these plugins could not be included directly in the core because they are based on third-party services.

 

Plugin S3

Most applications need to be able to store files.

The problem is that with Kuzzle in cluster mode, it is not possible to store these files directly on the file system.

This plugin provides a solution so that client applications can easily send files to S3 while saving bandwidth.

See the plugin.

 

Cloudinary et Prometheus

Two other plugins are also in preparation and will be released in the coming weeks.

The first is a plugin for the Cloudinary image management service and the second for the monitoring software Prometheus, stay tuned!

 

Kuzzle <3 React.js

At Kuzzle even if we have a preference for Vue.js, we also like the React.js library very much.

We have decided to provide a boilerplate so that you can start your applications quickly with React.js and Kuzzle.

 

This boilerplate contains:

 

  • a boilerplate of a Kuzzle business plugin in Docker
  • Redux and Redux Saga for the frontend
  • the implementation of authentication (frontend)
  • management of the offline mode on the side (frontend)

 

This boilerplate is available on Github and expands the list of our available boilerplates.

 

Wrap things up

I would like to thank the entire Kuzzle team for the work they have done over the past few months. As always, we take the quality of the products we offer to heart and we hope that they meet your expectations!

 

Since a few months, we have been teaching developers on how to use Kuzzle to develop modern applications, we now offer you a 3-day training package, click here to learn more.

 

Checkout here our previous releases:

- Winter Release 2019

- Equinox Release 2018

 

Sophie Imbach

Related posts