Einfacher Kommentar
Simple Comment ist eine Kommentarplattform für jede Website. Kostenlos, flexibel, Open Source, privat und skalierbar.
Sehen Sie sich die Demo an: https://simple-comment.netlify.app
Status
Hinweis: Die Moderationstools reichen noch nicht aus. Es gibt keine Benachrichtigung, wenn ein Benutzer einen Kommentar gepostet hat, und es gibt auch keine Möglichkeit, ihn vor der Genehmigung in Moderation zu halten. Wenn Ihnen dieses Projekt gefällt und Sie möchten, dass es innerhalb eines bestimmten Zeitplans weiterentwickelt wird, kontaktieren Sie mich. Ansonsten ist dieses Projekt noch auf dem Weg, aber auf dem langsamen Weg.
MVP ist fertig!
Die Mindestfunktionalität ist betriebsbereit!
Abgeschlossene Aufgaben: (zum Öffnen klicken)
- Cross-Origin-Fähigkeit
- Skript mit Frontend
- Alle API-Endpunkte reagieren wie erwartet
-
Access-Control-Allow-Origin
reagiert auf .env
Variablen
- Authentifizierung und Identifizierung funktionieren wie erwartet
- Authentifizierte Benutzer und Administratoren können wie erwartet mit Simple Comment interagieren
- Anonyme Benutzer können Themen erstellen
- Dies ist nützlich für Websites mit vielen Seiten
- Aus Sicherheitsgründen gelten Einschränkungen:
- Der
Referer
-Header und die topicId
müssen ordnungsgemäß zugeordnet werden - Der
Origin
muss in der Access-Control-Allow-Origin
Liste enthalten sein
- Serverseitige Validierung der vom Benutzer geposteten Daten
- Einrichtungsanweisungen
- Sind kompliziert, funktionieren aber, wenn sie befolgt werden
- Besucher können anonym posten
- Kommentar beinhaltet Gastbenutzer
- Ein wunderschönes Abzeichen entworfen!
- Besucher können Kommentare lesen und darauf antworten
Oberste Priorität nach MVP
- Optionale Benutzerauthentifizierung und -identifizierung
- Der Moderator hält Beiträge zur Genehmigung bereit
- Maßnahmen zur Spam-Prävention
- Integration mit der Authentifizierung von Drittanbietern
- E-Mail-Benachrichtigung und Integration
- Framework-freundliche Frontends
- Umfangreiche hilfreiche Kommentare!
- E2E-Tests
Schön zu haben
- Änderungsrichtlinie des Moderators zum Zurückhalten von Beiträgen zur Genehmigung
- Besucher können Eigentum an anonymen Beiträgen beanspruchen
- Schaltfläche „Bearbeiten“.
- Zeitfenster in der Richtlinie löschen/bearbeiten
- Benutzerprofile
Merkmale
- Einfach überall zu verwenden
- Sicherheit nach Industriestandard
- Entwickelt, um vollständig anpassbar zu sein
- Skalierbar, von Free-Tier bis Enterprise!
- Nutzt die kostenlosen Angebote von DBaaS und Website-Hosts
- Vollständig dokumentierte API
- Ethische, spurlose Besucherkontrolle über Daten
- Freundliche und einladende Entwickler-Community
Kommende Funktionen
- CLI (Befehlszeilenschnittstelle) für
- Installation und Einrichtung
- Inhaltsmoderation
- Benutzerverwaltung
- GraphQL-Endpunkt
- DSGVO-Konformität
- Benutzer können ihre eigenen Daten ohne Moderator einsehen und löschen
- Moderatoren können den Lese- und Schreibzugriff der Besucher einschränken
- IP-Whitelists, Graylists und Blacklists
- Benutzer-Whitelists, Graylists und Blacklists
- Selbstverifizierung des Benutzers
- Optionale Verbindung zum Fediverse
- Unterstützung für andere Datenbanken (PostgreSQL, Firestore, CockroachDB usw.) und Hosting-Dienste (Heroku, AWS Lambda, GCS)
- Unterstützt die Web-Authentifizierungs-API https://w3c.github.io/webauthn/
- Benutzerprofile
- Upvoting / Reaktionen
Aufstellen
Simple Comment kann auf demselben Server wie Ihre Website oder auf einem separaten, domänenübergreifenden Server ausgeführt werden
Es ist erforderlich , dass Simple Comment über https bereitgestellt wird:
Befolgen Sie diese Anweisungen. Wenn etwas unklar ist, erstellen Sie bitte ein neues Problem
- Verzweigen Sie dieses Repository in Ihr eigenes Konto
- Klonen Sie Ihre Gabel
- Kopieren Sie
example.env
in dasselbe Projektstammverzeichnis und benennen Sie es in .env
um - Geben Sie in
.env
Ihre eigenen (erfundenen oder zufällig generierten) geheimen Werte für diese Einträge ein (dh ersetzen Sie alles rechts von =
in jeder Zeile).- SIMPLE_COMMENT_MODERATOR_CONTACT_EMAIL
- SIMPLE_COMMENT_MODERATOR_ID
- SIMPLE_COMMENT_MODERATOR_PASSWORD
- JWT_SECRET
- Registrieren Sie sich für ein kostenloses MongoDB Atlas-Konto
- Befolgen Sie diese Anweisungen
- Fügen Sie in
.env
den richtigen DB_CONNECION_STRING
hinzu
- Eröffnen Sie ein Netlify-Konto, erstellen Sie eine neue Website und verknüpfen Sie Ihr Repository mit der neuen Website
- Sehen Sie sich die Seite zum Erstellen von Umgebungsvariablen von Netlify an
- Navigieren Sie zu „Build & Deploy => Environment“.
- Klicken Sie unter
Environmental Variables
auf die Schaltfläche Edit Variables
- Fügen Sie für jeden Eintrag in
.env
den Schlüssel und den entsprechenden Wert für alle Variablen hinzu - Fügen Sie für
IS_CROSS_SITE
den Wert true
hinzu, wenn das Kommentarsystem in seiner eigenen Domäne gehostet wird, und false
, wenn es sich um dieselbe Domäne handelt.
- Ändern Sie Ihre Website. Dies sind einfache Anweisungen, aber Sie können sie gerne weghacken
- Fügen Sie im HTML für jede Seite Ihrer Website, auf der Simple Comment ausgeführt werden soll, diese beiden Tags hinzu:
-
<script src="[path-to]/simple-comment.js" defer></script>
( src
muss auf die Datei simple-comment.js
verweisen) -
<div id="simple-comment-display"></div>
- Laden Sie die Datei
simple-comment.js
in den Skriptordner Ihrer Website hoch
- Es sollte nun möglich sein, Kommentare auf Ihrer Website zu hinterlassen und zu lesen
Fehlerbehebung
- Fehler:
Refused to connect to 'api/auth' because it violates the following Content Security Policy directive: connect-src 'self'
- Fügen Sie
https://<your-comment-app>.netlify.app
zu Ihrem Content Security Policy-Header neben connect-src
hinzu (siehe https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /Content-Security-Policy/connect-src)
- Fehler:
Access to fetch at 'https://<your-comment-app>.netlify.app/.netlify/functions/' from origin '<your-website>' has been blocked by CORS policy...
- Fügen Sie
<your-website>
zum ALLOW_ORIGIN
Schlüssel in .env
und als Netlify-Umgebungsvariable hinzu
Moderieren
- Besuchen Sie die Seite
login.html
die Sie im Setup hochgeladen haben - Melden Sie sich mit den Werten
SIMPLE_COMMENT_MODERATOR_ID
und SIMPLE_COMMENT_MODERATOR_PASSWORD
in Ihrer .env
Datei an
Standard-Build
Der Standard-Stack verwendet Netlify + MongoDB für das Backend und einen minimalen fetch
-basierten Client für das Frontend. Er kann jedoch problemlos für die Verwendung jedes Technologie-Stacks angepasst werden, solange die Tests bestanden werden und die API der Open API 3-Schemadatei entspricht
Sie können Ihre eigene kostenlose MongoDB-in-the-Cloud erhalten, indem Sie diese Anweisungen befolgen
Lokale Entwicklung
Setzt eine Unix-ähnliche Umgebung wie Ubuntu voraus.
Installation
- NVM installieren
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- Installieren Sie die MongoDB Community Edition und führen Sie sie aus
Prüfen
-
yarn run test
-
yarn run test:e2e
Verwendung
-
sudo systemctl start mongod
(siehe Linux) -
yarn run start
- Öffnen Sie http://localhost:7070/
API
Die API-Spezifikation wird durch die Datei simple-comment-openapi3.json im Open API 3-Format beschrieben und ist so konzipiert, dass sie mit jedem Backend, Frontend und Identifikationssystem austauschbar ist
Dies ist eine Übersicht über die Simple Comment API- Endpunkte
/comment
Ein comment
ist Text, den ein Benutzer als Antwort auf einen anderen comment
oder ein topic
postet. Die Präsentation dieser Antworten ist der einzige Grund, warum dieses Projekt existiert!
Der Kommentarendpunkt dient zum Erstellen, Lesen, Aktualisieren und Löschen (CRUD) einzelner Kommentare. Alle Kommentare müssen ein übergeordnetes Element haben, also etwas, auf das sie antworten, sei es ein topic
oder comment
/topic
Ein Thema ist eine besondere Art von Kommentar, der standardmäßig nur von Administratorbenutzern erstellt werden kann und einen organisatorischen Bereich für antwortende Kommentare bildet. Es handelt sich um eine Art Stammkommentar und hat daher kein übergeordnetes Element
Der /topic-Endpunkt verarbeitet CRUD für diese Stammkommentare. Eine GET-Operation von /topic
ruft eine Liste von Themen ab und GET auf /topic/{topicId}
ruft alle Kommentare als Antwort auf dieses Thema und ihre Nachkommen ab
/user
Standardmäßig können Kommentare von anonymen Benutzern gepostet werden, Simple Comment verfügt jedoch über ein minimales Identifizierungsschema, sodass Kommentatoren, die sich dafür entscheiden, gemäß den Richtlinien die Kontrolle über ihre Kommentare haben, nachdem sie gepostet wurden
/auth
Auth ist der Endpunkt für das Authentifizierungs- und Identifikationsschema. Ein Benutzer übermittelt seinen Benutzernamen und sein Kennwort an den Authentifizierungsendpunkt und erhält ein JSON Web Token (JWT), das ihn für andere CRUD-Vorgänge als dieser Benutzer authentifiziert
/verify
Gibt die angemeldete Benutzer-ID oder 401
zurück
Politik
policy
handelt es sich um ein Objekt mit Schlüssel-Wert-Paaren, das das Verhalten von Simple Comment regelt und beispielsweise die maximale Kommentarlänge bestimmt oder ob normale Benutzer sich selbst löschen können.
{
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
}
Alternativen
Es sind hier 34 Lösungen aufgeführt, die kein einfacher Kommentar sind. Fast alle davon sind ausgereifter als Simple Comment, und ich würde empfehlen, eines davon in Betracht zu ziehen, wenn Sie nicht speziell nach einer serverlosen, selbstgehosteten Open-Source-Lösung suchen. Nachfolgend sind jeweils die Vor- und Nachteile aufgeführt, die es von Simple Comment unterscheiden. Wenn „Vertrauen ist erforderlich“ aufgeführt ist, bedeutet dies, dass die Nutzung des Dienstes Vertrauen in das Unternehmen erfordert, da es Ihren Benutzern Closed-Source-Code bereitstellt, den Sie nicht kontrollieren und den Sie nicht einfach überprüfen können. Außerdem werden Benutzerdaten auf von ihnen kontrollierten Servern gespeichert. Diese Liste basiert auf öffentlicher Dokumentation, nicht auf Erfahrung. Wenn etwas falsch ist oder fehlt, lassen Sie es mich bitte wissen.
- Kommentarfeld https://commentbox.io/
- Kostenloses Kontingent
- Datenschutzorientiert
- Die Daten werden auf einem Drittanbieter-Server gespeichert
- Vertrauen ist gefragt
- Kommentare https://www.commentics.org/
- Open Source: GPL
- Kostenloses Kontingent mit Logo
- Erfordert einen Server mit PHP und MySQL
- Kommentar https://commento.io/
- Datenschutzorientiert
- Open Source: MIT
- Selbst-Host ODER Pay-to-Host
- Diskurs https://www.discourse.org/
- Open Source: GPL
- Voll ausgestattet
- Selbsthost ODER kostenpflichtige Version
- Kein kostenloses Kontingent
- Disqus https://disqus.com/ – Der 400 Pfund schwere Gorilla von e
- Kostenloses Kontingent
- Voll ausgestattet
- Geschlossene Quelle
- Die Daten werden auf einem Drittanbieter-Server gespeichert
- Erfordert Benutzeranmeldung
- Verkauft Benutzerdaten
- Vertrauen ist gefragt
- Facebook-Kommentar-Plugin https://developers.facebook.com/docs/plugins/comments/
- Kostenloses Kontingent
- Voll ausgestattet
- Geschlossene Quelle
- Die Daten werden auf einem Drittanbieter-Server gespeichert
- Erfordert Facebook
- Erfordert Benutzeranmeldung
- Verkauft Benutzerdaten
- Vertrauen ist gefragt
- FastComments https://fastcomments.com/
- Voll ausgestattet
- Datenschutzorientiert
- Chatten in Echtzeit
- HMAC-Authentifizierung
- Kein kostenloses Kontingent
- Vertrauen ist gefragt
- GraphComment https://graphcomment.com/
- Voll ausgestattet
- Kostenloses Kontingent
- Geschlossene Quelle
- Die Daten werden auf einem Drittanbieter-Server gespeichert
- Garantiert „vollständiges und vollständiges Eigentum“ an den Daten
- Server in Europa (Frankreich)
- Erfordert Benutzeranmeldung
- Vertrauen ist gefragt
- HTML-Kommentarfeld https://www.htmlcommentbox.com/
- Kostenloses Kontingent
- Geschlossene Quelle
- Die Daten werden auf einem Drittanbieter-Server gespeichert
- Vertrauen ist gefragt
- Datenschutzrichtlinie? Unbekannt.
- HashOver https://www.barkdull.org/software/hashover
- Open Source: AGPL
- Erfordert einen Server mit PHP und MySQL
- Hyvor Talk https://talk.hyvor.com/
- Auf Privatsphäre ausgerichtet
- Kein kostenloses Kontingent
- Erfordert Benutzeranmeldung
- Vertrauen ist gefragt
- IntenseDebate https://intensedebate.com/
- Voll ausgestattet
- Geschlossene Quelle
- Die Daten werden auf einem Drittanbieter-Server gespeichert
- Erfordert Benutzeranmeldung
- Vertrauen ist gefragt
- Isso https://posativ.org/isso/
- Die Dokumentation ist umfangreich
- Open Source: MIT
- Erfordert einen Linux-Server mit Python und SQLite3
- Nur Kommentare https://just-comments.com/
- Nicht mehr verfügbar https://just-comments.com/blog/2020-03-06-just-comments-is-shutting-down.html
- Mehr https://muut.com
- Entwicklerfreundliches https://muut.io
- Voll ausgestattet
- Kein kostenloses Kontingent
- Vertrauen ist gefragt
- Bemerkung42 https://remark42.com/
- Voll ausgestattet
- Open Source: MIT
- Erfordert einen Server
- Führt eine eigenständige ausführbare Datei aus, die in Go geschrieben ist
- Talkyard https://www.talkyard.io/
- Open Source: AGPL
- Selbsthosting ODER kostenpflichtiges Hosting
- Fast kostenloses Kontingent (1,90 €/Monat + optionale Add-ons)
- Rabatte für gemeinnützige Organisationen und Entwicklungsländer
- Valin https://valine.js.org/en/index.html
- Open Source: GPL
- Serverlos
- Erfordert ein Leancloud-Konto
- Die Server befinden sich in China
- Datensicherheit/Privatsphäre ist unklar
- Schnack! https://schnack.cool/
- Open Source: Lil License v1
- Erfordert einen Server, auf dem Node und SQLite3 ausgeführt werden
- Mehr: eine Liste von Kommentarsystemen, die ich nicht bewertet habe
- Cactus-Kommentare https://gitlab.com/cactus-comments
- Kommentator https://github.com/mcorbin/commentator
- Comntr https://github.com/comntr
- Korallenprojekt https://github.com/coralproject/talk
- Github-Kommentare 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/
- Netlify-Formulare https://bsdnerds.org/comments-static-site/
- Remarkbox https://www.remarkbox.com/
- ReplyBox https://getreplybox.com/
- Soziale Medien https://brid.gy/
- Staticman https://github.com/eduardoboucas/staticman
- Webmention https://webmention.io/
- Weitere Einzelheiten: https://news.ycombinator.com/item?id=25571253
- Äußerungen https://github.com/utterance/utterances