Laissez-moi introduire rapidement la chronique que vous avez sous les yeux. C’est ici qu’une ou deux fois par mois, je m’efforcerai de mettre de l’avant une librairie Open Source, en effectuant une présentation rapide de ses fonctionnalités, et de son usage potentiel. Cette chronique se veut sans prétention, le but étant simplement de faire connaître de nouvelles librairies. Par ailleurs, si vous pensez à une librairie dont vous voudriez discuter, faites-en la proposition dans les commentaires. Si le sujet s’y prête, il me fera plaisir d’y consacrer un article.

logo.png

Comme première librairie, j’ai choisi Keystone.js. Keystone est un CMS développé en Node.js, se basant sur MongoDB comme option de stockage des données. Il s’appuie sur Mongoose, qui est un wrapper pour Mongo, ainsi qu’Express, un framework applicatif basé sur Node. Keystone se veut une façon simple de générer une interface d’administration tout en facilitant le travail de développement pour la partie publique du site. À ce sujet, j’ai pu expérimenter Keystone dans le cadre d’un projet de web-application développé pour le compte de Frima Studio.

Qu’est-ce qui fait que Keystone est plus intéressant que le CMS X en langage Y?

Un des premiers avantages est l’extrême facilité à démarrer un projet et à rapidement ajouter les fonctionnalités requises pour en faire une application complète. En effet, Keystone supporte sans aucune modification:

  • Une façon simple de gérer ses modèles, routes et vues;
  • Une gestion des relations intégrées entre les modèles;
  • Une interface administrateur autogénérée;
  • Une gestion des utilisateurs (authentification, sessions, etc);
  • Des migrations, permettant de mettre à jour votre structure de données;
  • Une intégration avec Cloudinary pour la gestion des images;
  • Une intégration avec Mandrill pour l’envoi de courriels;
  • Une intégration avec Google Places pour l’affichage d’adresses;
  • Une intégration avec Embedly pour l’ajout des médias externes (comme Youtube).

Vous n’avez pas à me croire sur parole! Il est possible de lancer facilement une instance Heroku du projet, en suivant les instructions du Readme.

Quelques captures d’écran de l’interface administrateur de Keystone

 

Une capture d'écran présentant l'interface d'administration du démo.

L’interface de liste d’un contenu

Capture d'écran de l'interface de création

L’interface de création d’un nouveau contenu

Keystone possède bien sûr une administration complètement responsive!

La même interface, mais affichée sur un appareil mobile (bien sûr, l’administration est complètement responsive)

Ce que j’ai aimé de Keystone.

  • La facilité de démarrage d’un nouveau projet (principalement le générateur Yeoman);
  • La documentation complète;
  • La simplicité d’utilisation;
  • L’utilisation de React.js ;
  • La facilité d’intégration en tant que backend d’API REST;
  • La communauté.

Ce qui pourrait être amélioré

  • La génération des fichiers de migration pourrait être automatisée;
  • Pas de façon de réinitialiser son mot de passe (en cours);
  • La possibilité d’avoir une interface multilingue. Du travail est en cours de ce côté.

Les cas d’utilisation de Keystone

Keystone se veut un générateur d’admin à la base. Il est donc très pratique pour servir de “dépôt” de contenu, soit pour une application externe (application IOS ou Android par exemple) ou encore une application web (application Cordova ou purement web). Il peut aussi servir de CMS, grâce a sa flexibilité.

Image d’entête par keppet

En bref !

Créé en juin 2013, Keystone vit un développement très rapide, avec plus 3 000 commits depuis. Comptant plus de 3 500 stars sur github, c’est certainement le CMS Node.js le plus utilisé. Sa versatilité et sa facilité d’apprentissage le classent dans la liste de mes outils les plus appréciés. Chapeau à Jed Watson, son créateur, qui commit d’ailleurs religieusement depuis presque deux ans, et ce, sans manquer une seule journée!