---
title: "Kuzzle as a Framework: une toute nouvelle manière de développer des applications"
description: Nouvelle API pour étendre les fonctionnalités du backend. Les applications existantes basées sur des plugins restent 100% compatibles. Compatibilité Typescript à 100%. L'API des plugins sera désormais dédiée... aux plugins uniquement (briques génériques et réutilisables sur plusieurs projets). La documentation a été entièrement ré-écrite pour l’occasion.
image: https://blog.kuzzle.io/hubfs/blog%20post%20hubspot_%20%20KAFF%20(1).png
---

<https://kuzzle.io/>

c'est ici qu'on rajoute le truc en français<-->

- [EN](https://blog.kuzzle.io/?hsLang=fr)
- [Offre d'emploi](https://kuzzle.io/fr/qui-sommes-nous/recrutement/)
- [Nous Contacter](https://kuzzle.io/fr/nous-contacter/)
- [Newsletter](https://kuzzle.io/fr/newsletter/)
- [Développeurs](https://kuzzle.io/download)

- [L'équipe](https://kuzzle.io/fr/qui-sommes-nous/#notre-equipe)
- [Espace Presse](https://kuzzle.io/fr/qui-sommes-nous/presse/)

Suivez-nous

- <https://www.facebook.com/kuzzleio>
- <https://twitter.com/kuzzleio>
- <https://github.com/kuzzleio/kuzzle>

# Kuzzle as a Framework: une toute nouvelle manière de développer des applications

Par Alicia Thermos le 11 décembre 2020

Tout produit est jalonné par de grandes étapes de développement. La **refonte complète d’une API** est définitivement considérée comme une de ces grandes étapes.

[English version](https://blog.kuzzle.io/kuzzle-as-a-framework?hsLang=fr)

 

Aujourd’hui nous publions officiellement la version 2.8.0 de Kuzzle qui s’accompagne notamment de **la nouvelle API pour étendre les fonctionnalités du backend**: Kuzzle as a Framework.

 

**TL;DR:**

- Nouvelle API pour étendre les fonctionnalités du backend
- **Les applications existantes basées sur des plugins restent 100% compatibles**
- Compatibilité Typescript à 100%
- L'API des plugins sera désormais dédiée... aux plugins uniquement (briques génériques et réutilisables sur plusieurs projets)
- La documentation a été entièrement ré-écrite pour l’occasion

## Bad design lead to poor Developer eXperience

Depuis la création de Kuzzle, l’ajout de fonctionnalités métier spécifiques se fait via **le système de plugins, lesquels étaient chargés depuis le système de fichiers**.

 

Ce fonctionnement calqué sur Nginx avec des dossiers *enabled* et *available* faisait figure d’**ovni dans le monde de Node.js** et du développement web backend.

 

Bien qu’étant une application Node.js classique, Kuzzle se lançait comme **une sorte d’application standalone** qu’il était possible de personnaliser via ce système de plugins.

 

Nous avions conscience que cela causait de nombreuses incompréhensions pour nos utilisateurs et **freinait l’adoption de Kuzzle** en tant que solution de premier ordre pour développer un backend.

## Talk is cheap, show me the code

Après plusieurs mois de développement, nous avons **entièrement repensé la manière d’étendre les fonctionnalités du backend**.

 

Le développement de nouvelles fonctionnalités et leur intégration à Kuzzle se fait à présent de la même façon que la plupart des framework Node.js disponibles.

 

Il suffit d’installer le package NPM [kuzzle](https://www.npmjs.com/package/kuzzle) et de commencer à développer son application:

 

```
import { Backend, KuzzleRequest } from './index';
import PluginOAuth from 'kuzzle-plugin-auth-passport-oauth';

// Instantiate the backend
const app = new Backend('iot-sensors');

// Use an external plugin
app.plugin.use(new PluginOAuth());

// Register an API controller
app.controller.register('iot', {
  actions: {
    measure: {
      handler: async (request: KuzzleRequest) => {
        await app.sdk.document.create('iot', 'measures', request.input.body);

        return { status: 'created' };
      }
    }
  }
});

// Start the application
app.start()
  .then(() => {
    app.log.info('Application started');
});
```

 

La plupart des fonctionnalités disponibles pour les plugins le sont également dans le framework au travers de la classe Backend avec notamment:

- [API Controllers](https://docs.kuzzle.io/core/2/guides/develop-on-kuzzle/api-controllers),
- [Pipes et Hooks](https://docs.kuzzle.io/core/2/guides/develop-on-kuzzle/event-system),
- [Accès au EmbeddedSDK](https://docs.kuzzle.io/core/2/guides/develop-on-kuzzle/embedded-sdk),
- …

 

En interne la classe Backend n’est que du **sucre syntaxique autour de l’ancienne API des plugins**.

 

Un tout **nouveau Getting Started** permet de prendre en main le nouveau framework en quelques minutes: [Write an Application](https://docs.kuzzle.io/core/2/guides/getting-started/write-application)

 

Cela fait maintenant plusieurs mois que nous utilisons cette fonctionnalité en interne, cependant nous la considérons toujours comme **expérimentale car nous souhaitons pouvoir intégrer d’éventuels retours de la communauté**.

 

![](https://blog.kuzzle.io/hubfs/Google%20Drive%20Integration/FR%20-%20Release%202.8.0%20%20Kuzzle%20as%20a%20Framework.png)

 

 

## 100% Compatible Typescript

Cela fait maintenant plusieurs années que la popularité de Typescript grandit auprès des développeurs ce qui en fait **de facto un standard incontournable pour les produits Open Source**.

 

Cette refonte de notre API interne s’est accompagnée d’une **conversion en Typescript de 100% des classes et méthodes** exposées aux développeurs d’applications.

 

Ainsi il est possible de profiter de la **sûreté du système de types**, ainsi que de la **documentation intégrée et des exemples** (si votre éditeur le permet).

 

 

![tyepscript-completion-kuzzle](https://blog.kuzzle.io/hs-fs/hubfs/tyepscript-completion-kuzzle.gif?width=770&name=tyepscript-completion-kuzzle.gif)

 

## Nouvelle Documentation

La documentation a été également **entièrement ré-écrite pour l’occasion**.

 

Son d**écoupage en différents guides** facilite grandement la prise en main et l’apprentissage de Kuzzle.

 

Les références de l’[API standard de Kuzzle](https://docs.kuzzle.io/core/2/api/) (payloads, controllers, etc) et celle des [classes du framework](https://docs.kuzzle.io/core/2/framework) ont été séparées pour plus de clarté.

 

Nous en avons également profité pour **refondre la recherche Algolia** et utiliser le moteur Open Source d’Algolia: [DocSearch](https://docsearch.algolia.com/).

## Et maintenant ?

Nous comptons sur vos retours afin d’**améliorer encore la Developer eXperience** de Kuzzle.

Dans les prochains mois nous allons bien sûr continuer à ajouter de nouvelles fonctionnalités dans le framework !

N’hésitez pas à venir nous [rejoindre sur Discord](http://join.discord.kuzzle.io/) si vous avez des questions ou des remarques ;-)

 

- [Tweet](https://twitter.com/share)

![Alicia Thermos](https://app.hubspot.com/settings/avatar/47c07be51c528b59e92581e25bfcc712)

Par Alicia Thermos le 11 décembre 2020

### Postes associés

 Qu'est ce que Kuzzle?

Vous avez une question technique ? [Rejoignez notre communauté sur Discord](https://discord.gg/tAEtyDZ)

Vous avez un projet ? [Contactez-nous](https://kuzzle.io/fr/nous-contacter/)

[![Plateforme iot Kuzzle](https://no-cache.hubspot.com/cta/default/3803374/163de49b-b8ad-431a-97e4-f9590159a4c2.png)](https://cta-redirect.hubspot.com/cta/redirect/3803374/163de49b-b8ad-431a-97e4-f9590159a4c2)

[![New call-to-action](https://no-cache.hubspot.com/cta/default/3803374/9b4b7631-98c5-4552-9ab3-28c903108a85.png)](https://cta-redirect.hubspot.com/cta/redirect/3803374/9b4b7631-98c5-4552-9ab3-28c903108a85)

### categories

- [Bâtiments intelligents (4)](https://blog.kuzzle.io/fr/tag/bâtiments-intelligents)
- [Jumeaux numériques (5)](https://blog.kuzzle.io/fr/tag/jumeaux-numériques)
- [Kuzzle (8)](https://blog.kuzzle.io/fr/tag/kuzzle)
- [Logistique et transport (1)](https://blog.kuzzle.io/fr/tag/logistique-et-transport)
- [Plateforme IoT (12)](https://blog.kuzzle.io/fr/tag/plateforme-iot)
- [Territoires connectés (4)](https://blog.kuzzle.io/fr/tag/territoires-connectés)

### Derniers posts

### Inscription

Veuillez remplir le formulaire ci-dessous pour vous abonner à notre blog

[Tweets by kuzzleio](https://twitter.com/kuzzleio?ref_src=twsrc%5Etfw)

[PRODUITS](https://kuzzle.io/fr/) [![DEMANDER UNE DEMO IOT](https://no-cache.hubspot.com/cta/default/3803374/b06c7be7-0b3d-47ed-bcbc-9d9ac5b63b77.png)](https://kuzzle.io/fr/kuzzle-iot-plateforme-open-source/demo-kuzzke-iot/?hsCtaTracking=b71c079c-26bb-4aa4-ab8d-09e9d93d52e5%7C7456984a-b366-4fec-b69c-57feff222eb5)

PRODUITS KUZZLE

[Kuzzle Backend](https://kuzzle.io/fr/kuzzle-backend/)

[Kuzzle IoT](https://kuzzle.io/fr/kuzzle-iot-plateforme-open-source/)

FONCTIONNALITES PRETES A L'EMPLOI

[Securite & Authentification des utilisateurs](https://kuzzle.io/fr/kuzzle-backend/)

[Base de données en temps réel](https://kuzzle.io/fr/kuzzle-backend/)

[Geolocalisation en temps réel](https://kuzzle.io/fr/kuzzle-backend/)

[Moteur Pub/Sub en temps réel](https://kuzzle.io/fr/kuzzle-backend/)

[Kuzzle Admin Console](https://kuzzle.io/fr/kuzzle-backend/)

[Installable On Premise & Cloud Agnostic](https://kuzzle.io/fr/kuzzle-backend/)

[CAS CLIENTS](https://kuzzle.io/fr/cas-clients/)

[Smart Cities](https://kuzzle.io/fr/cas-clients/)

[Smart Building](https://kuzzle.io/fr/cas-clients/)

[Smart Industrie](https://kuzzle.io/fr/cas-clients/)

[Smart Logistique](https://kuzzle.io/fr/cas-clients/)

[TARIFS](https://kuzzle.io/fr/tarifs/)

[Nos tarifs](https://kuzzle.io/fr/tarifs/)

[DÉVELOPPEURS](https://docs.kuzzle.io) [![Télécharger Kuzzle](https://no-cache.hubspot.com/cta/default/3803374/9230fbb8-1602-40d6-b5e9-7395705251de.png)](https://cta-redirect.hubspot.com/cta/redirect/3803374/9230fbb8-1602-40d6-b5e9-7395705251de)

GUIDES

[Getting Started](https://docs.kuzzle.io/guide/getting-started)

[Essentials](https://docs.kuzzle.io/guide/essentials)

[Kuzzle in Depth](https://docs.kuzzle.io/guide/kuzzle-depth)

DOCUMENTATION

[SDK Reference](https://docs.kuzzle.io/sdk-reference/kuzzle)

[Koncorde](https://docs.kuzzle.io/core/1/guides/cookbooks/realtime-api/introduction/)

[API Documentation](https://docs.kuzzle.io/core/1/api/essentials/connecting-to-kuzzle/)

[Plugin Reference](https://docs.kuzzle.io/plugins/1/essentials/getting-started/)

[Elasticsearch Cookbook](https://docs.kuzzle.io/guide/1/elasticsearch/introduction/)

COMMUNAUTÉ

[Github](https://github.com/kuzzleio/kuzzle)

[Discord](https://discord.gg/tAEtyDZ)

[ENTREPRISE](https://kuzzle.io/company/) [![Inscription à notre newsletter](https://no-cache.hubspot.com/cta/default/3803374/63a23e8f-3fe5-476a-bb0e-b6f94bd3ac7a.png)](https://kuzzle.io/fr/newsletter/)

À PROPOS

[Qui sommes-nous](https://kuzzle.io/fr/qui-sommes-nous/)

[Rejoignez l'équipe](https://kuzzle.io/fr/qui-sommes-nous/recrutement/)

[Méthodes de travail](https://kuzzle.io/fr/company/methodes-de-travail/)

[Presse](https://kuzzle.io/fr/qui-sommes-nous/espace-presse/)

[Partenaires](https://kuzzle.io/fr/qui-sommes-nous/espace-partenaire/)

[Nous contacter](https://kuzzle.io/fr/nous-contacter/)

SUIVEZ-NOUS

[Twitter](https://twitter.com/kuzzleio)

[Facebook](https://www.facebook.com/kuzzleio)

[Github](https://github.com/kuzzleio)

[Linkedin](https://www.linkedin.com/company/kuzzle/)

[Youtube](https://www.youtube.com/channel/UCHcEzVQoH10YSyxc7jD3SMw)

- [Politique de confidentialité](https://kuzzle.io/privacy-policy)

©2021 KUZZLE - Tous droits réservés