Commentaire simple
Simple Comment est une plateforme de commentaires pour n’importe quel site Web. Gratuit, flexible, open source, privé et évolutif.
Voir la démo : https://simple-comment.netlify.app
Statut
NB : Les outils de modération ne sont pas encore adéquats. Il n'y a aucune notification lorsqu'un utilisateur a publié un commentaire, ni aucun moyen de le modérer avant son approbation. Si ce projet vous plaît et souhaitez le voir se développer davantage sur un calendrier précis, contactez-moi. Pour le reste, ce projet est toujours en route, mais sur une voie lente.
Le MVP est terminé !
La fonctionnalité minimale est opérationnelle !
Tâches terminées : (cliquez pour ouvrir)
- Capacité multi-origine
- Script avec interface
- Tous les points de terminaison de l'API répondent comme prévu
-
Access-Control-Allow-Origin
répond aux variables .env
- L'authentification et l'identification fonctionnent comme prévu
- Les utilisateurs et administrateurs authentifiés peuvent interagir avec Simple Comment comme prévu
- L'utilisateur anonyme peut créer des sujets
- Ceci est utile pour les sites avec beaucoup de pages
- Pour des raisons de sécurité, des restrictions s'appliquent :
- L'en-tête
Referer
et le topicId
doivent correspondre correctement - L'
Origin
doit figurer dans la liste Access-Control-Allow-Origin
- Validation côté serveur des données publiées par l'utilisateur
- Instructions de configuration
- Sont compliqués mais fonctionnent lorsqu'ils sont suivis
- Le visiteur peut publier de manière anonyme
- Le commentaire inclut un utilisateur invité
- J'ai conçu un magnifique badge !
- Les visiteurs peuvent lire et répondre aux commentaires
Priorité absolue après MVP
- Authentification et identification des utilisateurs en option
- Le modérateur conserve les messages pour approbation
- Mesures de prévention du spam
- Intégration avec l'authentification tierce
- Notification par e-mail et intégration
- Frontaux compatibles avec le framework
- De nombreux commentaires utiles!
- Tests E2E
C'est agréable d'avoir
- Le modérateur modifie la politique relative au maintien des messages pour approbation
- Le visiteur peut revendiquer la propriété des publications anonymes
- Bouton Modifier
- Supprimer/modifier les fenêtres horaires dans la politique
- Profils d'utilisateurs
- Voir les commentaires
- Avatar
Caractéristiques
- Facile à utiliser n'importe où
- Sécurité conforme aux normes de l'industrie
- Conçu pour être entièrement personnalisable
- Évolutif, du niveau gratuit à l'entreprise !
- Bénéficie des offres gratuites de DBaaS et des hébergeurs de sites Web
- API entièrement documentée
- Contrôle éthique et sans suivi des visiteurs sur les données
- Communauté de développeurs conviviale et accueillante
Fonctionnalités à venir
- CLI (interface de ligne de commande) pour
- installation et configuration
- modération du contenu
- administration des utilisateurs
- Point de terminaison GraphQL
- Conformité RGPD
- Les utilisateurs peuvent consulter et supprimer leurs propres données sans modérateur
- Les modérateurs peuvent restreindre l'accès des visiteurs en lecture et en écriture
- Listes blanches, listes grises et listes noires IP
- Listes blanches, listes grises et listes noires d'utilisateurs
- Auto-vérification de l'utilisateur
- Connexion optionnelle au Fediverse
- Prise en charge d'autres bases de données (PostgreSQL, Firestore, CockroachDB, etc.) et services d'hébergement (Heroku, AWS Lambda, GCS)
- Prise en charge de l'API d'authentification Web https://w3c.github.io/webauthn/
- Profils d'utilisateurs
- Vote positif / Réactions
Installation
Simple Comment peut être exécuté sur le même serveur que votre site Web ou sur un serveur inter-domaines distinct
Il faut que Simple Comment soit servi via https :
Suivez ces instructions. Si quelque chose n'est pas clair, veuillez créer un nouveau problème
- Forkez ce référentiel sur votre propre compte
- Clonez votre fourchette
- Copiez
example.env
dans le même répertoire racine du projet et renommez-le en .env
- Dans
.env
, entrez vos propres valeurs secrètes (inventées ou générées aléatoirement) pour ces entrées (c'est-à-dire remplacez tout ce qui se trouve à droite de =
dans chaque ligne).- SIMPLE_COMMENT_MODERATOR_CONTACT_EMAIL
- SIMPLE_COMMENT_MODERATOR_ID
- SIMPLE_COMMENT_MODERATOR_PASSWORD
- JWT_SECRET
- inscrivez-vous pour un compte MongoDB Atlas gratuit
- Suivez ces instructions
- Dans
.env
ajoutez le DB_CONNECION_STRING
approprié
- Créez un compte Netlify, créez un nouveau site Web et associez votre référentiel au nouveau site Web.
- Consultez la page des variables d'environnement de construction de Netlify
- Accédez à « Construire et déployer => Environnement »
- Sous
Environmental Variables
cliquez sur le bouton Edit Variables
- Pour chaque entrée dans
.env
ajoutez la clé et la valeur correspondante pour toutes les variables - Pour
IS_CROSS_SITE
ajoutez la valeur true
si le système de commentaires est hébergé dans son propre domaine et false
s'il s'agit du même domaine.
- Modifiez votre site Web. Ce sont des instructions simples, mais n'hésitez pas à les modifier
- Dans le code HTML de chaque page de votre site Web sur laquelle vous souhaitez que Simple Comment s'exécute, ajoutez ces deux balises :
-
<script src="[path-to]/simple-comment.js" defer></script>
( src
doit pointer vers le fichier simple-comment.js
) -
<div id="simple-comment-display"></div>
- Téléchargez le fichier
simple-comment.js
dans le dossier de script de votre site Web
- Il devrait désormais être possible de laisser et de lire des commentaires sur votre site Web
Dépannage
- Erreur :
Refused to connect to 'api/auth' because it violates the following Content Security Policy directive: connect-src 'self'
- Ajoutez
https://<your-comment-app>.netlify.app
à l'en-tête de votre politique de sécurité du contenu à côté de connect-src
(qv https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /Content-Security-Policy/connect-src)
- Erreur :
Access to fetch at 'https://<your-comment-app>.netlify.app/.netlify/functions/' from origin '<your-website>' has been blocked by CORS policy...
- Ajoutez
<your-website>
à la clé ALLOW_ORIGIN
dans .env
et en tant que variable d'environnement Netlify
Modération
- Visitez la page
login.html
que vous avez téléchargée dans la configuration et - Connectez-vous en utilisant les valeurs
SIMPLE_COMMENT_MODERATOR_ID
et SIMPLE_COMMENT_MODERATOR_PASSWORD
dans votre fichier .env
Construction par défaut
La pile par défaut utilise Netlify + MongoDB pour le backend et un client basé sur fetch
minimale pour le frontend, mais elle peut être facilement adaptée pour utiliser n'importe quelle pile technologique, à condition que les tests réussissent et que l'API soit conforme au fichier de schéma Open API 3.
Vous pouvez obtenir votre propre MongoDB-in-the-cloud gratuit en suivant ces instructions
Développement local
Suppose un environnement de type Unix, comme Ubuntu.
Installation
- Installer NVM
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- Installer et exécuter MongoDB Community Edition
Test
-
yarn run test
-
yarn run test:e2e
Usage
-
sudo systemctl start mongod
(qv Linux) -
yarn run start
- ouvrez http://localhost:7070/
API
La spécification API est décrite par le fichier simple-comment-openapi3.json au format Open API 3 et est conçue pour être interchangeable avec n'importe quel système backend, frontend et d'identification.
Ceci est un aperçu des points de terminaison de l'API Simple Comment.
/comment
Un comment
est un texte qu'un utilisateur publie en réponse à un autre comment
ou à un topic
, et la présentation de ces réponses est la seule raison pour laquelle ce projet existe !
Le point de terminaison des commentaires est destiné à la création, à la lecture, à la mise à jour et à la suppression (CRUD) de commentaires individuels. Tous les commentaires doivent avoir un parent, c'est-à-dire quelque chose auquel ils répondent, qu'il s'agisse d'un topic
ou comment
/topic
Un sujet est un type spécial de commentaire qui, par défaut, ne peut être créé que par des utilisateurs administrateurs et forme un compartiment organisationnel pour les commentaires qui répondent. C'est une sorte de commentaire racine, et n'a donc pas de parent
Le point de terminaison /topic gère CRUD pour ces commentaires racine. Une opération GET de /topic
obtiendra une liste de sujets et GET sur /topic/{topicId}
obtiendra tous les commentaires en réponse à ce sujet et leurs descendants.
/user
Par défaut, les commentaires peuvent être publiés par des utilisateurs anonymes, mais Simple Comment a un système d'identification minimal afin que les commentateurs qui choisissent de le faire puissent avoir le contrôle de leurs commentaires après leur publication, conformément à la politique.
/auth
Auth est le point final du schéma d'authentification et d'identification. Un utilisateur soumet son nom d'utilisateur et son mot de passe au point de terminaison d'authentification et reçoit un jeton Web JSON (JWT) qui l'authentifie en tant qu'utilisateur pour d'autres opérations CRUD.
/verify
Renvoie l'identifiant de l'utilisateur connecté ou 401
politique
policy
est un objet contenant des paires clé-valeur qui régit le comportement de Simple Comment , déterminant par exemple la longueur maximale des commentaires ou si les utilisateurs ordinaires peuvent se supprimer eux-mêmes.
{
isGuestAccountAllowed : boolean , // if true, a visitor can post anonymously using a guest account. if false, only authenticated users can comment.
canFirstVisitCreateTopic : boolean , // if a discussion does not exist for a page, shall it be created when visited for the first time, or does admin create all topics?
canGuestCreateUser : boolean , // can a user with guest credentials create (their own) user profile? if 'canPublicCreateUser' is set to 'true' this setting is ignored
canGuestReadDiscussion : boolean , // can a user with guest credentials browse and read discussions? if 'canPublicReadDiscussion' is set to 'true' this setting is ignored
canGuestReadUser : boolean , // can a user with guest credentials view user profiles? if 'canPublicReadUser' is true, this setting is ignored
canPublicCreateUser : boolean , // can a user with no credentials create (their own) user profile?
canPublicReadDiscussion : boolean , // can a user with no credentials browse and read discussions?
canPublicReadUser : boolean , // can an anonymous visitor view any user's profile?
canUserDeleteSelf : boolean , // can a user delete their own profile?
maxCommentLengthChars : number , // Attempting to post a comment longer than this number of characters will be rejected by the API
}
Alternatives
Il existe 34 solutions qui ne sont pas répertoriées ici. Presque tous sont plus matures que Simple Comment, et je recommanderais d’en envisager un si vous ne recherchez pas spécifiquement une solution sans serveur, open source et auto-hébergée. Ci-dessous, chacun présente les avantages et les inconvénients qui le distinguent de Simple Comment. Si la confiance est requise est répertoriée, cela signifie que l'utilisation du service nécessite une confiance dans l'entreprise, car elle fournira à vos utilisateurs du code source fermé que vous ne contrôlez pas et que vous ne pouvez pas facilement inspecter ; de plus, les données des utilisateurs seront conservées sur les serveurs qu’ils contrôlent. Cette liste est basée sur une documentation publique et non sur l'expérience. Si quelque chose est incorrect ou manquant, veuillez me le faire savoir.
- Zone de commentaires https://commentbox.io/
- Niveau gratuit
- Axé sur la confidentialité
- Les données sont conservées sur un serveur tiers
- La confiance est requise
- Commentaires https://www.commentics.org/
- Source ouverte : GPL
- Niveau gratuit avec logo
- Nécessite un serveur exécutant PHP et MySQL
- Commentaire https://commento.io/
- Axé sur la confidentialité
- Open Source : MIT
- Auto-hébergement OU paiement pour héberger
- Discours https://www.discourse.org/
- Source ouverte : GPL
- Entièrement fonctionnel
- Version auto-hébergée OU payante
- Pas de niveau gratuit
- Disqus https://disqus.com/ - Le gorille de 400 livres d'e
- Niveau gratuit
- Entièrement fonctionnel
- Source fermée
- Les données sont conservées sur un serveur tiers
- Nécessite une connexion utilisateur
- Vend des données utilisateur
- La confiance est requise
- Plugin de commentaires Facebook https://developers.facebook.com/docs/plugins/comments/
- Niveau gratuit
- Entièrement fonctionnel
- Source fermée
- Les données sont conservées sur un serveur tiers
- Nécessite Facebook
- Nécessite une connexion utilisateur
- Vend des données utilisateur
- La confiance est requise
- Commentaires rapides https://fastcomments.com/
- Entièrement fonctionnel
- Axé sur la confidentialité
- Chat en temps réel
- Authentification HMAC
- Pas de niveau gratuit
- La confiance est requise
- GraphComment https://graphcomment.com/
- Entièrement fonctionnel
- Niveau gratuit
- Source fermée
- Les données sont conservées sur un serveur tiers
- Garantit la « propriété pleine et entière » des données
- Serveurs en Europe (France)
- Nécessite une connexion utilisateur
- La confiance est requise
- Zone de commentaires HTML https://www.htmlcommentbox.com/
- Niveau gratuit
- Source fermée
- Les données sont conservées sur un serveur tiers
- La confiance est requise
- Politique de confidentialité? Inconnu.
- HashOver https://www.barkdull.org/software/hashover
- Open Source : AGPL
- Nécessite un serveur exécutant PHP et MySQL
- Discussion Hyvor https://talk.hyvor.com/
- Axé sur la confidentialité
- Pas de niveau gratuit
- Nécessite une connexion utilisateur
- La confiance est requise
- IntenseDebate https://intensedebate.com/
- Entièrement fonctionnel
- Source fermée
- Les données sont conservées sur un serveur tiers
- Nécessite une connexion utilisateur
- La confiance est requise
- Isso https://posativ.org/isso/
- La documentation est vaste
- Source ouverte : MIT
- Nécessite un serveur Linux exécutant Python et SQLite3
- Juste des commentaires https://just-comments.com/
- Décédé https://just-comments.com/blog/2020-03-06-just-comments-is-shutting-down.html
- Muut https://muut.com
- Adapté aux développeurs https://muut.io
- Entièrement fonctionnel
- Pas de niveau gratuit
- La confiance est requise
- Remarque42 https://remark42.com/
- Entièrement fonctionnel
- Source ouverte : MIT
- Nécessite un serveur
- Exécute un exécutable autonome écrit en Go
- Talkyard https://www.talkyard.io/
- Open source : AGPL
- Auto-hébergement OU hébergement payant
- Niveau presque gratuit (1,90 €/mois + modules complémentaires optionnels)
- Réductions pour les organisations à but non lucratif et les pays en développement
- Valine https://valine.js.org/en/index.html
- Source ouverte : GPL
- Sans serveur
- Nécessite un compte Leancloud
- Les serveurs sont en Chine
- La sécurité/confidentialité des données n'est pas claire
- schnack! https://schnack.cool/
- Open source : Licence Lil v1
- Nécessite un serveur exécutant Node et SQLite3
- Plus : une liste de systèmes de commentaires que je n'ai pas évalués
- Commentaires de Cactus https://gitlab.com/cactus-comments
- Commentateur https://github.com/mcorbin/commentator
- Comntr https://github.com/comntr
- Projet Coral https://github.com/coralproject/talk
- Commentaires Github http://donw.io/post/github-comments/
- Glosa https://github.com/glosa
- Hypercomments https://www.hypercomments.com/
- Mastadon https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/
- Formulaires Netlify https://bsdnerds.org/comments-static-site/
- Boîte de remarques https://www.remarkbox.com/
- ReplyBox https://getreplybox.com/
- Réseaux sociaux https://brid.gy/
- Homme statique https://github.com/eduardoboucas/staticman
- Mention Web https://webmention.io/
- plus de détails https://news.ycombinator.com/item?id=25571253
- énoncés https://github.com/utterance/utterances