Write autocompletion plugin for Etherpad -- 2

Job ID: 34464939

Budget: $30 – $250 USD

There is a text editor called etherpad https://github.com/ether/etherpad-lite .

Now this editor can be customized with different plugins https://static.etherpad.org/index.html

It is now our intention develop a plugin for text autocompletion (see here, https://github.com/ether/etherpad-lite/wiki/Creating-a-plugin, how to write a plugin). There are some requirements:

- It can be based on https://github.com/jdittrich/ep_autocomp or you start from scratch
- Autocompletion is only enabled if the user has subscribed to our SaaS service, so a request to our Postgresql DB should be made
- You can select between different text autocompletion models or whether you want autocompletion enabled
- For a user we store somewhere (blob storage, or Postgresql) the recent 1 000, 10 000, 100 000 words
- If a user types at the very beginning a container for the model is started in the K8s cluster clostest to him, having loaded his personal model
- If a user types both the personal model and the different text autocompletion models are requested (both containers in the closest k8s cluster to the end user) and, if sensible, a suggestion is made like in smart compose of gmail (see graphic Gmail-Smart-Compose.jpeg), i.e., some greyish
- The behavior should be similar to smart compose, so if you continue typing it is not a problem and if you hit tab then the grey text is incorporated. Also, when erasing some characters it should be similar.
- Also it should be possible, if the suggestion is not good, to have a drop down controllable with arrows like in https://github.com/jdittrich/ep_autocomp (see graphic ep_autocomplete.png), only in a more stylish way. We should be able to select during the installation of the plugin whether we want this feature or not.
- Latency should be below 100 ms from typing to the suggestion and it should yield a flawless experience, particularly when typing, just like for Gmail's smart compose.
- The personal statistics for the recent number of words should be updated after the user leaves, again in blob storage or Postgresql
- The statistics for the current plugin should be stored in our Postgresql, like how many use it (particularly the fraction of those that subscribed to our SaaS), the current version, and the fraction of autocompletion usage while typing.
- A/B testing should be possible

Overall, the entire modifcations should like very stylish. The code should be well-documented and there should also be thorough code testing, such that we can be sure others can work on it and the code works.

Please show in your bid that you read the description, as otherwise you cannot be considered.

IMPORTANT: You may ask questions before, but the price you give is not negotiable. Once you give a bid, this is the one we go along with.
Related categories: JavaScript RESTful API Kubernetes