Comentario sencillo
Simple Comment es una plataforma de comentarios para cualquier sitio web. Gratis, flexible, de código abierto, privado y escalable.
Vea la demostración: https://simple-comment.netlify.app
Estado
Nota: las herramientas de moderación aún no son adecuadas. No hay ninguna notificación cuando un usuario ha publicado un comentario, ni ninguna forma de mantenerlo con moderación antes de su aprobación. Si te gusta este proyecto y te gustaría verlo desarrollado más en un cronograma específico, contáctame. Por lo demás, este proyecto todavía está en camino, pero a paso lento.
¡MVP está completo!
¡La funcionalidad mínima está operativa!
Tareas completadas: (haga clic para abrir)
- Capacidad de origen cruzado
- Guión con interfaz
- Todos los puntos finales de API responden como se esperaba
-
Access-Control-Allow-Origin
responde a variables .env
- La autenticación e identificación funcionan como se esperaba
- Los usuarios y administradores autenticados pueden interactuar con el comentario simple como se esperaba
- El usuario anónimo puede crear temas.
- Esto es útil para sitios con muchas páginas.
- Por razones de seguridad, se aplican restricciones:
- El encabezado
Referer
y el topicId
deben asignarse correctamente - El
Origin
debe estar en la lista Access-Control-Allow-Origin
- Validación del lado del servidor de los datos publicados por el usuario
- Instrucciones de configuración
- Son complicados pero funcionan cuando se siguen.
- El visitante puede publicar de forma anónima
- El comentario incluye usuario invitado.
- ¡Diseñé una hermosa insignia!
- Los visitantes pueden leer y responder a los comentarios.
Máxima prioridad después de MVP
- Autenticación e identificación de usuario opcionales
- El moderador retiene publicaciones para su aprobación
- Medidas de prevención de spam
- Integración con autenticación de terceros
- Notificación e integración por correo electrónico
- Interfaces amigables con el framework
- ¡Extensos comentarios útiles!
- Pruebas E2E
agradable tener
- Política de cambio del moderador sobre la retención de publicaciones para su aprobación
- El visitante puede reclamar la propiedad de publicaciones anónimas
- botón editar
- Eliminar/editar ventanas de tiempo en la política
- Perfiles de usuario
Características
- Fácil de usar en cualquier lugar
- Seguridad estándar de la industria
- Diseñado para ser totalmente personalizable
- ¡Escalable, desde el nivel gratuito hasta el empresarial!
- Aprovecha las ofertas de nivel gratuito de DBaaS y servidores de sitios web
- API completamente documentada
- Control ético y sin seguimiento de los visitantes sobre los datos
- Comunidad de desarrolladores amigable y acogedora
Próximas funciones
- CLI (interfaz de línea de comandos) para
- instalación y configuración
- moderación de contenido
- administración de usuarios
- Punto final GraphQL
- Cumplimiento del RGPD
- Los usuarios pueden ver y eliminar sus propios datos sin moderador.
- Los moderadores pueden restringir el acceso de lectura y escritura de los visitantes.
- Listas blancas, grises y negras de IP
- Listas blancas, listas grises y listas negras de usuarios
- Autoverificación del usuario
- Conexión opcional al Fediverse
- Soporte para otras bases de datos (PostgreSQL, Firestore, CockroachDB, etc) y servicios de hosting (Heroku, AWS Lambda, GCS)
- Admite API de autenticación web https://w3c.github.io/webauthn/
- Perfiles de usuario
- Votación / Reacciones
Configuración
Simple Comment se puede ejecutar en el mismo servidor que su sitio web o en un servidor independiente entre dominios.
Es necesario que el Comentario Simple se sirva vía https:
Siga estas instrucciones. Si algo no está claro, cree un nuevo problema.
- Bifurca este repositorio a tu propia cuenta
- Clona tu tenedor
- Copie
example.env
en el mismo directorio raíz del proyecto y cámbiele el nombre a .env
- En
.env
, ingrese sus propios valores secretos (inventados o generados aleatoriamente) para estas entradas (es decir, reemplace todo lo que está a la derecha de =
en cada línea).- SIMPLE_COMMENT_MODERATOR_CONTACT_EMAIL
- SIMPLE_COMMENT_MODERATOR_ID
- SIMPLE_COMMENT_MODERATOR_PASSWORD
- JWT_SECRET
- Regístrese para obtener una cuenta gratuita de MongoDB Atlas
- Sigue estas instrucciones
- En
.env
agregue el DB_CONNECION_STRING
adecuado
- Regístrese para obtener una cuenta de Netlify, comience un nuevo sitio web y vincule su repositorio al nuevo sitio web
- Revise la página de variables de entorno de compilación de Netlify
- Vaya a 'Construir e implementar => Entorno`
- En
Environmental Variables
haga clic en el botón Edit Variables
- Para cada entrada en
.env
agregue la clave y el valor correspondiente para todas las variables - Para
IS_CROSS_SITE
agregue el valor true
si el sistema de comentarios está alojado en su propio dominio y false
si es el mismo dominio.
- Modifica tu sitio web. Estas son instrucciones simples, pero siéntete libre de modificarlas.
- En el HTML de cada página de su sitio web donde desea que se ejecute un comentario simple, agregue estas dos etiquetas:
-
<script src="[path-to]/simple-comment.js" defer></script>
( src
debe apuntar al archivo simple-comment.js
) -
<div id="simple-comment-display"></div>
- Cargue el archivo
simple-comment.js
en la carpeta de secuencias de comandos de su sitio web
- Ahora debería ser posible dejar y leer comentarios en su sitio web.
Solución de problemas
- Error:
Refused to connect to 'api/auth' because it violates the following Content Security Policy directive: connect-src 'self'
- Agregue
https://<your-comment-app>.netlify.app
al encabezado de su Política de seguridad de contenido junto a connect-src
(qv https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /Política-de-seguridad-de-contenido/connect-src)
- Error:
Access to fetch at 'https://<your-comment-app>.netlify.app/.netlify/functions/' from origin '<your-website>' has been blocked by CORS policy...
- Agregue
<your-website>
a la clave ALLOW_ORIGIN
en .env
y como variable ambiental de Netlify
Moderando
- Visite la página
login.html
que cargó en Configuración y - Inicie sesión utilizando los valores
SIMPLE_COMMENT_MODERATOR_ID
y SIMPLE_COMMENT_MODERATOR_PASSWORD
en su archivo .env
Construcción predeterminada
La pila predeterminada utiliza Netlify + MongoDB para el backend y un cliente basado en fetch
mínima para el frontend, pero se puede adaptar fácilmente para usar cualquier pila de tecnología, siempre que las pruebas pasen y la API se ajuste al archivo de esquema Open API 3.
Puede obtener su propio MongoDB en la nube de nivel gratuito siguiendo estas instrucciones
Desarrollo local
Asume un entorno tipo Unix, como Ubuntu.
Instalación
- instalar nvm
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- Instalar y ejecutar MongoDB Community Edition
Prueba
-
yarn run test
-
yarn run test:e2e
Uso
-
sudo systemctl start mongod
(qv Linux) -
yarn run start
- abrir http://localhost:7070/
API
La especificación API se describe en el archivo simple-comment-openapi3.json en formato Open API 3 y está diseñada para ser intercambiable con cualquier backend, frontend y sistema de identificación.
Esta es una descripción general de los puntos finales de la API de comentarios simples.
/comment
Un comment
es un texto que un usuario publica en respuesta a otro comment
o a un topic
, y presentar estas respuestas es la única razón por la que existe este proyecto.
El punto final de comentarios es para la creación, lectura, actualización y eliminación (CRUD) de comentarios individuales. Todos los comentarios deben tener un padre, es decir, algo a lo que responde, ya sea un topic
o comment
/topic
Un tema es un tipo especial de comentario que, de forma predeterminada, solo pueden crear usuarios administradores y forma un grupo organizacional para los comentarios que responden. Es una especie de comentario raíz y, por lo tanto, no tiene padre.
El punto final /topic maneja CRUD para estos comentarios raíz. Una operación GET de /topic
obtendrá una lista de temas y GET en /topic/{topicId}
obtendrá todos los comentarios en respuesta a ese tema y sus descendientes.
/user
De forma predeterminada, los usuarios anónimos pueden publicar comentarios, pero Simple Comment tiene un esquema de identificación mínimo para que los comentaristas que elijan hacerlo puedan tener control sobre sus comentarios después de su publicación, de acuerdo con la política.
/auth
Auth es el punto final del esquema de autenticación e identificación. Un usuario envía su nombre de usuario y contraseña al punto final de autenticación y recibe un token web JSON (JWT) que lo autentica como ese usuario para otras operaciones CRUD.
/verify
Devuelve la identificación del usuario que inició sesión o 401
política
policy
es un objeto que contiene pares clave-valor que gobierna cómo se comporta el comentario simple , determinando, por ejemplo, la longitud máxima del comentario o si los usuarios normales pueden eliminarse a sí mismos.
{
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
}
Alternativas
Hay 34 soluciones que no se enumeran aquí como comentario simple. Casi todos estos son más maduros que Simple Comment, y recomendaría considerar uno si no está buscando específicamente una solución autohospedada, de código abierto y sin servidor. A continuación se enumeran los pros y los contras que lo distinguen del comentario simple. Si se requiere confianza , significa que el uso del servicio requiere confianza en la empresa, porque proporcionarán código fuente cerrado a sus usuarios que usted no controla y no puede inspeccionar fácilmente; asimismo, los datos de los usuarios se mantendrán en servidores que estos controlen. Esta lista se basa en documentación pública, no en la experiencia. Si falta algo o hay algo incorrecto, hágamelo saber.
- Cuadro de comentarios https://commentbox.io/
- Nivel gratuito
- Centrado en la privacidad
- Los datos se guardan en un servidor de terceros
- Se requiere confianza
- Comentarios https://www.commentics.org/
- Código abierto: GPL
- Nivel gratuito con logo
- Requiere un servidor que ejecute PHP y MySQL
- Comentario https://commento.io/
- Centrado en la privacidad
- Fuente abierta: MIT
- Autohospedaje O pago para hospedar
- Discurso https://www.discourse.org/
- Código abierto: GPL
- Todas las funciones
- Versión de pago o autohospedaje
- Sin nivel gratuito
- Disqus https://disqus.com/ - El gorila de 400 libras de e
- Nivel gratuito
- Todas las funciones
- Fuente cerrada
- Los datos se guardan en un servidor de terceros
- Requiere inicio de sesión de usuario
- Vende datos de usuario
- Se requiere confianza
- Complemento de comentarios de Facebook https://developers.facebook.com/docs/plugins/comments/
- Nivel gratuito
- Todas las funciones
- Fuente cerrada
- Los datos se guardan en un servidor de terceros
- Requiere Facebook
- Requiere inicio de sesión de usuario
- Vende datos de usuario
- Se requiere confianza
- Comentarios rápidos https://fastcomments.com/
- Todas las funciones
- Centrado en la privacidad
- Chat en tiempo real
- Autenticación HMAC
- Sin nivel gratuito
- Se requiere confianza
- Comentario gráfico https://graphcomment.com/
- Todas las funciones
- Nivel gratuito
- Fuente cerrada
- Los datos se guardan en un servidor de terceros
- Garantiza la "plena y completa propiedad" de los datos
- Servidores en Europa (Francia)
- Requiere inicio de sesión de usuario
- Se requiere confianza
- Cuadro de comentarios HTML https://www.htmlcommentbox.com/
- Nivel gratuito
- Fuente cerrada
- Los datos se guardan en un servidor de terceros
- Se requiere confianza
- ¿Política de privacidad? Desconocido.
- HashOver https://www.barkdull.org/software/hashover
- Fuente abierta: AGPL
- Requiere un servidor que ejecute PHP y MySQL
- Charla de Hyvor https://talk.hyvor.com/
- Centrado en la privacidad
- Sin nivel gratuito
- Requiere inicio de sesión de usuario
- Se requiere confianza
- Debate intenso https://intensedebate.com/
- Todas las funciones
- Fuente cerrada
- Los datos se guardan en un servidor de terceros
- Requiere inicio de sesión de usuario
- Se requiere confianza
- Isso https://posativ.org/isso/
- La documentación es extensa.
- Fuente abierta: MIT
- Requiere un servidor Linux que ejecute Python y SQLite3
- Solo comentarios https://just-comments.com/
- Desaparecido https://just-comments.com/blog/2020-03-06-just-comments-is-shutting-down.html
- Muut https://muut.com
- https://muut.io amigable para desarrolladores
- Todas las funciones
- Sin nivel gratuito
- Se requiere confianza
- Observación42 https://remark42.com/
- Todas las funciones
- Fuente abierta: MIT
- Requiere un servidor
- Ejecuta un ejecutable autónomo escrito en Go
- Patio de conversación https://www.talkyard.io/
- Código abierto: AGPL
- Alojamiento propio o alojamiento pago
- Nivel casi gratuito (1,90 €/mes + complementos opcionales)
- Descuentos para organizaciones sin fines de lucro y países en desarrollo.
- Valina https://valine.js.org/en/index.html
- Código abierto: GPL
- Sin servidor
- Requiere una cuenta leancloud
- Los servidores están en China.
- La seguridad/privacidad de los datos no está clara
- ¡bocadillo! https://schnack.cool/
- Código abierto: Licencia Lil v1
- Requiere un servidor que ejecute Node y SQLite3
- Más: una lista de sistemas de comentarios que no he evaluado
- Comentarios de cactus https://gitlab.com/cactus-comments
- Comentarista https://github.com/mcorbin/commentator
- Comntr https://github.com/comntr
- Proyecto Coral https://github.com/coralproject/talk
- Comentarios de Github http://donw.io/post/github-comments/
- Glosa https://github.com/glosa
- Hipercomentarios https://www.hypercomments.com/
- Mastadon https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/
- Formularios Netlify https://bsdnerds.org/comments-static-site/
- Caja de comentarios https://www.remarkbox.com/
- ReplyBox https://getreplybox.com/
- Redes sociales https://brid.gy/
- Hombre estático https://github.com/eduardoboucas/staticman
- Mención web https://webmention.io/
- más detalle https://news.ycombinator.com/item?id=25571253
- declaraciones https://github.com/utterance/utterances