Jamments, l’API de commentaires de la JAMstack
Lorsque j’ai fait la transition depuis WordPress vers le statique avec Hexo, le plus challengeant a été de trouver une solution pour les commentaires. J’ai eu tellement de mal à trouver quelque chose qui répondait à mon besoin que j’ai décidé de développer ma propre solution de commentaires. Présentation rapide de Jamments, une API de commentaires open source conçue pour la JAMstack.
Fonctionnalités
Jamments, dont le nom provient de la contraction de JAMstack et comments, est une API REST dédiée à la gestion des commentaires. Ainsi, dans la plus pure tradition JAMstack, tout tourne autour d’un service via une api, vous gérez l’interface.
Cette api permet donc :
- de soumettre un nouveau commentaire (nouveau ou réponse),
- de choisir si l’on veut être notifié ou pas des nouveaux commentaires sur un article,
- de se désabonner des notifications,
- d’éditer ou d’effacer ses commentaires,
- de lister tous les commentaires d’un article,
- de récupérer le nombre de commentaires de tous les articles du site,
- d’éditer ou d’effacer des commentaires en tant qu’admin.
L’api dispose d’une documentation dédiée. Cependant, pour en faciliter l’usage, j’ai développé un module frontend qui permet de facilement interagir avec cette dernière, sans avoir a écrire les requêtes HTTP.
Sous le capot
Le serveur est écrit en Node.js et permet l’utilisation d’une base de données au choix :
- SQLite,
- MySQL/MariaDB,
- PostgreSQL,
- SQL server.
Au rang des performances, le serveur n’est sollicité que lors de la soumission de nouveaux commentaires. Lorsqu’un commentaire est validé, les fichiers JSON sont générés et le serveur web n’a plus qu’à servir lesdits fichiers, sans même passer par Jamments ou la base de données. Tout est donc caché par défaut, gage de performances.
Actuellement, Jamments s’installe sur un serveur classique, cependant, il serait assez intéressant de l’adapter pour un usage serverless (Netlify, AWS…). Sa conception permettrait une adaptation assez aisée. Je suis à l’écoute des cas d’usage et serait ravi d’accepter une PR en ce sens.
Gestion du spam
Lorsque l’on parle de commentaires, une des problématiques majeures est la gestion du spam. Je pars ici d’un postulat très simple : les spammeurs ne s’encombrent pas d’emails valides. Partant de ce principe, plusieurs étapes permettent de valider un commentaire :
- Validation syntaxique de l’email fourni, si ça ne ressemble pas à un email il y a un problème.
- On valide ensuite les MX, si le nom de domaine de l’email n’accepte pas les emails, il y a anguille sous roche également.
- Enfin, si les deux conditions précédentes sont réunies, un email de confirmation contenant un lien de validation est envoyé à l’auteur du commentaire. Dès lors qu’il clique dessus, le commentaire est publié.
Je crois avoir fait le tour, si vous êtes convaincu, la documentation vous aidera à facilement l’installer sur votre propre serveur.
Dans tous les cas, n’hésitez pas à partager vos avis en commentaires et à l’améliorer !
Commentaires
Rejoignez la discussion !