Skip to content

Latest commit

 

History

History
199 lines (146 loc) · 7.52 KB

overview.rst

File metadata and controls

199 lines (146 loc) · 7.52 KB

Overview

images/overview-use-cases.png

Kinto is a minimalist JSON storage service with synchronisation and sharing abilities. It is meant to be easy to use and easy to self-host.

Kinto is used at Mozilla and released under the Apache v2 licence.

Why use Kinto?

We believe data belongs to the users, and not to the application authors. When writing applications, data should be made available to any device, connected or offline, and everything should be in sync.

Rather than spending a non-trivial amount of time and expertise on implementing all that (and then maintaining it!), you could use Kinto, that does all that for you:

Use cases

  • A generic Web database for frontend applications.
  • Build collaborative applications with fine-grained permissions.
  • Store encrypted data at a location you control.
  • Synchronise application data between different devices.

Note

At Mozilla, Kinto is used in Firefox and Firefox OS for global synchronization of settings and assets, as well as a first-class solution for personal data in browser extensions and Web apps.

Key features

https://thenounproject.com/search/?q=syncing&i=31170 Synchronisation https://thenounproject.com/search/?q=permissions&i=23303 Fined grained permissions
https://thenounproject.com/search/?q=quality+control&i=170795 JSON Schema validation https://thenounproject.com/search/?q=community&i=189189 Universal and multi clients
https://thenounproject.com/search/?q=free&i=669 Open Source and Self-hostable https://thenounproject.com/search/?q=community&i=189189 Designed in the open

Also

Ecosystem

https://thenounproject.com/search/?q=offline&i=90580 Offline-first JavaScript client :github:`Python client <Kinto/kinto.py>`
https://thenounproject.com/search/?q=attachment&i=169265 :github:`File attachments on records <Kinto/kinto-attachment>` https://thenounproject.com/search/?q=refresh&i=110628 Live :ref:`Push notifications <tutorials>`
https://commons.wikimedia.org/wiki/File:React.js_logo.svg :github:`Kinto+React boilerplate <Kinto/kinto-react-boilerplate>` https://thenounproject.com/search/?q=tutorial&i=24313 :ref:`Example applications <app-examples>`

Coming soon

(See our roadmap)

Synchronisation

Bi-directional synchronisation of records is a very hard topic.

Kinto takes some shortcuts by only providing the basics for concurrency control and polling for changes, and not trying to resolve conflicts automatically.

Basically, each object has a revision number which is guaranteed to be incremented after each modification. Kinto does not keep old revisions of objects.

Clients can retrieve the list of changes that occurred on a collection of records since a specified revision. Kinto can also use it to avoid accidental updates of objects.

images/overview-synchronisation.png

Note

Kinto synchronisation was designed and built by the Mozilla Firefox Sync team.

Notifications

Kinto can execute some code when a particular event occurs. For example, when a record is created or updated in a particular collection.

It can send a notification to clients using WebSockets or fill a queue of messages in Redis or execute any custom code of your choice, like for sending emails or pinging a third-party.

See :ref:`our tutorials <tutorials>` for more in-depth information on these topics.