Comentário Simples
Simple Comment é uma plataforma de comentários para qualquer site. Gratuito, flexível, de código aberto, privado e escalável.
Veja a demonstração: https://simple-comment.netlify.app
Status
NB: As ferramentas de moderação ainda não são adequadas. Não há notificação quando um usuário publica um comentário, nem qualquer forma de mantê-lo com moderação antes da aprovação. Se você gostou deste projeto e gostaria de vê-lo desenvolvido em um cronograma específico, entre em contato comigo. Caso contrário, este projeto ainda está no caminho certo, mas num caminho lento.
O MVP está completo!
A funcionalidade mínima está instalada e funcionando!
Tarefas concluídas: (clique para abrir)
- Capacidade de origem cruzada
- Script com front-end
- Todos os endpoints da API respondem conforme o esperado
-
Access-Control-Allow-Origin
responde a variáveis .env
- Autenticação e identificação funcionam conforme esperado
- Usuários e administradores autenticados podem interagir com o Simple Comment conforme esperado
- Usuário anônimo pode criar tópicos
- Isso é útil para sites com muitas páginas
- Por razões de segurança, aplicam-se restrições:
- O cabeçalho
Referer
e o topicId
devem ser mapeados corretamente - A
Origin
deve estar na lista Access-Control-Allow-Origin
- Validação do lado do servidor de dados postados pelo usuário
- Instruções de configuração
- São complicados, mas funcionam quando seguidos
- O visitante pode postar anonimamente
- O comentário inclui usuário convidado
- Desenhei um lindo emblema!
- Os visitantes podem ler e responder aos comentários
Prioridade máxima após MVP
- Autenticação e identificação de usuário opcionais
- Moderador retém postagens para aprovação
- Medidas de prevenção de spam
- Integração com autenticação de terceiros
- Notificação e integração por e-mail
- Front-ends compatíveis com framework
- Extensos comentários úteis!
- Testes E2E
É bom ter
- O moderador altera a política de retenção de postagens para aprovação
- O visitante pode reivindicar a propriedade de postagens anônimas
- Botão Editar
- Excluir/editar janelas de tempo na política
- Perfis de usuário
Características
- Fácil de usar em qualquer lugar
- Segurança padrão da indústria
- Projetado para ser totalmente personalizável
- Escalável, do nível gratuito ao empresarial!
- Aproveita as ofertas de nível gratuito de DBaaS e hosts de sites
- API totalmente documentada
- Controle ético e sem rastreamento de visitantes sobre os dados
- Comunidade de desenvolvedores amigável e acolhedora
Próximos recursos
- CLI (interface de linha de comando) para
- instalação e configuração
- moderação de conteúdo
- administração de usuários
- Ponto de extremidade GraphQL
- Conformidade com o GDPR
- Os usuários podem visualizar e excluir seus próprios dados sem moderador
- Os moderadores podem restringir o acesso de leitura e gravação dos visitantes
- Listas brancas, listas cinzentas e listas negras de IP
- Listas brancas, listas cinzentas e listas negras de usuários
- Autoverificação do usuário
- Conexão opcional ao Fediverse
- Suporte para outros bancos de dados (PostgreSQL, Firestore, CockroachDB, etc) e serviços de hospedagem (Heroku, AWS Lambda, GCS)
- Suporte à API de autenticação da Web https://w3c.github.io/webauthn/
- Perfis de usuário
- Votação positiva / reações
Configurar
O Simple Comment pode ser executado no mesmo servidor do seu site ou em um servidor separado entre domínios
É necessário que o Simple Comment seja veiculado via https:
Siga estas instruções. Se algo não estiver claro, crie um novo problema
- Bifurque este repositório para sua própria conta
- Clone seu garfo
- Copie
example.env
para o mesmo diretório raiz do projeto e renomeie-o para .env
- Em
.env
, insira seus próprios valores secretos (inventados ou gerados aleatoriamente) para essas entradas (ou seja, substitua tudo à direita de =
em cada linha).- SIMPLE_COMMENT_MODERATOR_CONTACT_EMAIL
- SIMPLE_COMMENT_MODERATOR_ID
- SIMPLE_COMMENT_MODERATOR_PASSWORD
- JWT_SECRET
- inscreva-se para uma conta gratuita do MongoDB Atlas
- Siga estas instruções
- Em
.env
adicione o DB_CONNECION_STRING
adequado
- Cadastre-se para uma conta Netlify, comece um novo site e vincule seu repositório ao novo site
- Revise a página de variáveis de ambiente de construção do Netlify
- Navegue até 'Build & Deploy => Environment`
- Em
Environmental Variables
clique no botão Edit Variables
- Para cada entrada em
.env
adicione a chave e o valor correspondente para todas as variáveis - Para
IS_CROSS_SITE
adicione o valor true
se o sistema de comentários estiver hospedado em seu próprio domínio e false
se for o mesmo domínio.
- Modifique seu site. Estas são instruções simples, mas fique à vontade para hackear
- No HTML de cada página do seu site onde você deseja que o Simple Comment seja executado, adicione estas duas tags:
-
<script src="[path-to]/simple-comment.js" defer></script>
( src
deve apontar para o arquivo simple-comment.js
) -
<div id="simple-comment-display"></div>
- Faça upload do arquivo
simple-comment.js
para a pasta de script do seu site
- Agora deve ser possível deixar e ler comentários no seu site
Solução de problemas
- Erro:
Refused to connect to 'api/auth' because it violates the following Content Security Policy directive: connect-src 'self'
- Adicione
https://<your-comment-app>.netlify.app
ao cabeçalho da sua Política de Segurança de Conteúdo próximo a connect-src
(qv https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /Política de segurança de conteúdo/connect-src)
- Erro:
Access to fetch at 'https://<your-comment-app>.netlify.app/.netlify/functions/' from origin '<your-website>' has been blocked by CORS policy...
- Adicione
<your-website>
à chave ALLOW_ORIGIN
em .env
e como uma variável ambiental Netlify
Moderando
- Visite a página
login.html
que você carregou em Configuração e - Faça login usando os valores
SIMPLE_COMMENT_MODERATOR_ID
e SIMPLE_COMMENT_MODERATOR_PASSWORD
em seu arquivo .env
Compilação padrão
A pilha padrão usa Netlify + MongoDB para o back-end e um cliente baseado em fetch
mínima para o front-end, mas pode ser facilmente adaptada para usar qualquer pilha de tecnologia, desde que os testes sejam aprovados e a API esteja em conformidade com o arquivo de esquema Open API 3
Você pode obter seu próprio MongoDB de nível gratuito na nuvem seguindo estas instruções
Desenvolvimento local
Assume um ambiente semelhante ao Unix, como o Ubuntu.
Instalação
- Instalar nvm
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- Instale e execute o MongoDB Community Edition
Teste
-
yarn run test
-
yarn run test:e2e
Uso
-
sudo systemctl start mongod
(qv Linux) -
yarn run start
- abra http://localhost:7070/
API
A especificação da API é descrita pelo arquivo simple-comment-openapi3.json no formato Open API 3 e foi projetada para ser intercambiável com qualquer backend, frontend e sistema de identificação
Esta é uma visão geral dos endpoints da API Simple Comment
/comment
Um comment
é um texto que um usuário publica em resposta a outro comment
ou topic
, e apresentar essas respostas é a única razão pela qual este projeto existe!
O endpoint de comentários serve para a criação, leitura, atualização e exclusão (CRUD) de comentários individuais. Todos os comentários devem ter um pai, ou seja, algo ao qual ele responde, seja um topic
ou comment
/topic
Um tópico é um tipo especial de comentário que, por padrão, só pode ser criado por usuários administradores e forma um bloco organizacional para comentários respondidos. É uma espécie de comentário raiz e, portanto, não tem pai
O endpoint /topic lida com CRUD para esses comentários raiz. Uma operação GET de /topic
obterá uma lista de tópicos e GET em /topic/{topicId}
obterá todos os comentários em resposta a esse tópico e seus descendentes
/user
Por padrão, os comentários podem ser postados por usuários anônimos, mas o Simple Comment possui um esquema de identificação mínimo para que os comentaristas que optarem por fazê-lo possam ter controle sobre seus comentários após serem postados, de acordo com a política.
/auth
Auth é o ponto final do esquema de autenticação e identificação. Um usuário envia seu nome de usuário e senha para o endpoint de autenticação e recebe um JSON Web Token (JWT) que o autentica como esse usuário para outras operações CRUD
/verify
Retorna o ID do usuário logado ou 401
política
policy
é um objeto que contém pares de valores-chave que governa como o Comentário Simples se comporta, determinando, por exemplo, o comprimento máximo do comentário ou se usuários comuns podem se excluir.
{
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
Existem 34 soluções que não são Simple Comment listadas aqui. Quase todos eles são mais maduros do que o Simple Comment, e eu recomendaria considerar um se você não estiver procurando especificamente por uma solução auto-hospedada, de código aberto e sem servidor. Listados abaixo de cada um estão os prós e os contras que o distinguem do Simple Comment. Se Confiança é necessária estiver listado, significa que o uso do serviço requer confiança na empresa, porque eles estarão servindo código-fonte fechado aos seus usuários que você não controla e não pode inspecionar facilmente; da mesma forma, os dados do usuário serão mantidos em servidores que eles controlam. Esta lista é baseada em documentação pública, não em experiência. Se algo estiver incorreto ou faltando, por favor me avise.
- Caixa de comentários https://commentbox.io/
- Nível gratuito
- Foco na privacidade
- Os dados são mantidos em servidores de terceiros
- Confiança é necessária
- Comentários https://www.commentics.org/
- Código aberto: GPL
- Nível gratuito com logotipo
- Requer um servidor rodando PHP e MySQL
- Comentário https://commento.io/
- Foco na privacidade
- Código aberto: MIT
- Auto-hospedeiro OU pagamento para host
- Discurso https://www.discourse.org/
- Código aberto: GPL
- Totalmente caracterizado
- Versão auto-hospedada OU paga
- Sem nível gratuito
- Disqus https://disqus.com/ - O gorila de 400 libras de e
- Nível gratuito
- Totalmente caracterizado
- Fonte Fechada
- Os dados são mantidos em servidores de terceiros
- Requer login do usuário
- Vende dados do usuário
- Confiança é necessária
- Plug-in de comentários do Facebook https://developers.facebook.com/docs/plugins/comments/
- Nível gratuito
- Totalmente caracterizado
- Fonte Fechada
- Os dados são mantidos em servidores de terceiros
- Requer Facebook
- Requer login do usuário
- Vende dados do usuário
- Confiança é necessária
- FastComments https://fastcomments.com/
- Totalmente caracterizado
- Foco na privacidade
- Bate-papo em tempo real
- Autenticação HMAC
- Sem nível gratuito
- Confiança é necessária
- GraphComment https://graphcomment.com/
- Totalmente caracterizado
- Nível gratuito
- Fonte Fechada
- Os dados são mantidos em servidores de terceiros
- Garante “propriedade total e completa” dos dados
- Servidores na Europa (França)
- Requer login do usuário
- Confiança é necessária
- Caixa de comentários HTML https://www.htmlcommentbox.com/
- Nível gratuito
- Fonte Fechada
- Os dados são mantidos em servidores de terceiros
- Confiança é necessária
- Política de Privacidade? Desconhecido.
- HashOver https://www.barkdull.org/software/hashover
- Código aberto: AGPL
- Requer um servidor rodando PHP e MySQL
- Hyvor Talk https://talk.hyvor.com/
- Foco na privacidade
- Sem nível gratuito
- Requer login do usuário
- Confiança é necessária
- IntenseDebate https://intensedebate.com/
- Totalmente caracterizado
- Fonte Fechada
- Os dados são mantidos em servidores de terceiros
- Requer login do usuário
- Confiança é necessária
- Isso https://posativ.org/isso/
- A documentação é extensa
- Código aberto: MIT
- Requer um servidor Linux rodando Python e SQLite3
- Apenas comentários https://just-comments.com/
- Extinto https://just-comments.com/blog/2020-03-06-just-comments-is-shutting-down.html
- Muut https://muut.com
- Amigável ao desenvolvedor https://muut.io
- Totalmente caracterizado
- Sem nível gratuito
- Confiança é necessária
- Observação42 https://remark42.com/
- Totalmente caracterizado
- Código aberto: MIT
- Requer um servidor
- Executa um executável independente escrito em Go
- Talkyard https://www.talkyard.io/
- Código aberto: AGPL
- Hospedagem própria OU hospedagem paga
- Nível quase gratuito (€ 1,90/mês + complementos opcionais)
- Descontos para organizações sem fins lucrativos e países em desenvolvimento
- Valina https://valine.js.org/en/index.html
- Código aberto: GPL
- Sem servidor
- Requer uma conta leancloud
- Os servidores estão na China
- A segurança/privacidade dos dados não está clara
- lanche! https://schnack.cool/
- Código aberto: Licença Lil v1
- Requer um servidor executando Node e SQLite3
- Mais: uma lista de sistemas de comentários que não avaliei
- Comentários sobre cactos https://gitlab.com/cactus-comments
- Comentador https://github.com/mcorbin/commentator
- Comntr https://github.com/comntr
- Projeto Coral https://github.com/coralproject/talk
- Comentários do Github http://donw.io/post/github-comments/
- Glosa https://github.com/glosa
- Hipercomentários https://www.hypercomments.com/
- Mastadon https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/
- Formulários Netlify https://bsdnerds.org/comments-static-site/
- Caixa de observação https://www.remarkbox.com/
- ResponderBox https://getreplybox.com/
- Redes sociais https://brid.gy/
- Staticman https://github.com/eduardoboucas/staticman
- Menção na web https://webmention.io/
- mais detalhes https://news.ycombinator.com/item?id=25571253
- declarações https://github.com/utterance/utterances