URL: https://linuxfr.org/news/a-decouvrir-fasty-un-cms-pour-les-equipes-de-developpeurs
Title: À découvrir : Fasty, un CMS pour les équipes de développeurs
Authors: fasty
Davy Defaud, bubar et palm123
Date: 2020-11-04T13:44:34+01:00
License: CC By-SA
Tags:
Score: 5
Fasty est un système de gestion de contenu (CMS) libre basé sur OpenResty, une divergence de NGINX avec LuaJIT embarqué et ArangoDB, une base de données multi‑document, et graph.
----
[Fasty](https://fasty.ovh)
[Lapis](https://leafo.net/lapis/)
[OpenResty](https://openresty.org/en/)
[ArangoDB](https://www.arangodb.com/)
[RiotJS](https://riot.js.org/)
----
Après une conférence suivie sur Hong Kong où deux interlocuteurs faisaient une présentation d’ArangoDB et OpenResty, j’ai mis environ un an pour commencer à creuser un peu plus du côté d’OpenResty et de Lua. En effet, je connaissais déjà pas mal ArangoDB qui était devenu ma base de données de choix pour la plupart de mes projets. Le développeur présentant OpenResty était si enthousiaste qu’il a attiré mon attention. Et il venait du monde Ruby, comme moi.
Donc, je viens du monde Ruby et Ruby on Rails, et je commençais à me lasser de ce cadriciel. Je cherchais donc du frais. Mon prérequis était les performances brutes (ArangoDB est très rapide, et LuaJIT également). Je voulais également me simplifier la vie lors du déploiement d’une nouvelle application. J’ai donc créé Fasty. Un système de gestion de contenu mais, en fait, pas seulement. Étant [multi‑tenant](https://fr.wikipedia.org/wiki/Multi-tenant), je peux donc créer autant d’applications que mon serveur le permet (et, en fait, la limite est haute).
Le système de gestion de contenu est donc :
- multi‑tenant ;
- internationalisable (multilingue) ;
- gère plusieurs patrons (_templates_) ;
- gère les partiels ;
- gère les requêtes AQL ;
- permet de créer une API côté serveur ;
- permet de créer des applications Web monopages (connectées aux API) ;
- gère des vues dynamiques côté serveur ;
- gestion de types de données sur mesure (texte, étiquette, image, fichier, select, etc.) ;
- gestion de scripts Node.js avec redémarrage automatique (possibilité de faire du [Socket.IO](https://socket.io/), par exemple, ou des scripts _callbacks_ pour les paiements des banques) ;
- gestion du _workflow_ (_staging_, QA, production).
Bref, il me permet maintenant de créer des sites complexes sans même avoir à toucher le cœur du système de gestion de contenu.
D’ailleurs, pour information, ce dernier se base sur un cadriciel appelé Lapis. Il est codé en [MoonScript]( https://moonscript.org/) qui compile en Lua). Pour ce qui est des applications Web monopages (SPA), j’utilise [RiotJS](https://riot.js.org/).
J’ai donc quelques sites qui tournent avec en production :
- ;
- ;
- .
Pour information, le démarrage ou redémarrage de l’application est instantanée. Il n’y a pas de temps d’arrêt. Et le tout est géré par Docker Compose.
J’ai également créé un module NPM qui me permet de synchroniser mes partiels, _layouts_, API, etc., sur mon ordinateur en utilisant mon éditeur favori. Chaque modification de fichier est envoyée sur le serveur directement. Cela facilite le développement. Le script permet également de travailler à plusieurs sur le projet et synchronise les fichiers de tous les développeurs connectés.
Le projet est open source et donc tous les contributeurs sont les bienvenus. Pour le moment, je suis le développeur principal, mais j’espère que d’autres me rejoindront.