Ir para o conteúdo
Acecore

Como adicionar comentários a um blog Astro usando apenas Cloudflare

by Gui
Índice
Como adicionar comentários a um blog Astro usando apenas Cloudflare

Comentários adicionam estado a um site estático. Por isso, muita gente usa widgets externos.

No Acecore, escolhemos outro caminho: em PR #101, implementamos a função apenas com Cloudflare.

  • Astro renderiza a interface.
  • Cloudflare Pages Functions expõe /api/comments.
  • Cloudflare D1 armazena comentários.
  • Cloudflare Turnstile protege o envio.
  • wrangler.jsonc separa preview e production.

O ponto principal é que a área de comentários não vira uma dependência externa dentro da página.

Arquitetura

CamadaArquivo ou serviço
UIsrc/components/BlogComments.astro
Artigosrc/views/BlogPostPage.astro
APIfunctions/api/comments.ts
BancoD1 binding COMMENTS_DB
ProteçãoCloudflare Turnstile
Schemamigrations/0001_create_blog_comments.sql

A UI lê com GET /api/comments?slug=...&locale=... e envia com POST /api/comments.

A Function valida origin, payload, Turnstile, limites, duplicados e conteúdo bloqueado antes de inserir.

Por que D1

Comentários precisam de consultas por artigo, ordenação por data, soft delete, duplicidade e rate limit por cliente. SQL deixa isso simples.

Os comentários visíveis são deleted_at IS NULL. Para ocultar spam, basta preencher deleted_at, sem apagar fisicamente a linha.

As queries usam prepared statements com bind(), evitando concatenar input de usuário no SQL.

Wrangler e ambientes

COMMENTS_DB fica em wrangler.jsonc. Preview aponta para acecore-comments-preview; production aponta para acecore-comments-production.

Isso evita que uma preview de PR grave dados reais de produção.

Turnstile no servidor

O widget no browser não é suficiente. A Function envia o token para o Cloudflare Siteverify usando TURNSTILE_SECRET_KEY.

Também validamos o hostname retornado, para aceitar apenas domínios esperados e previews autorizadas.

Anti-spam

A primeira versão é restrita:

  • sem URLs
  • sem emails
  • sem HTML
  • sem links Markdown
  • sem caracteres repetidos em excesso
  • sem termos promocionais comuns
  • honeypot no formulário

Também há rate limit em memória e rate limit persistente em D1 com client_hash. O hash usa salt; o IP bruto não precisa ser armazenado.

SEO

Comentários são carregados no cliente e a área usa data-pagefind-ignore. Eles não entram no índice como conteúdo principal.

Para um blog corporativo, isso separa conteúdo editorial revisado de interação dos visitantes.

Resumo

Serviços externos de comentários são úteis, mas não obrigatórios.

Se o site já roda em Cloudflare Pages, Pages Functions + D1 + Turnstile + Wrangler formam uma base suficiente para comentários leves, com UI, dados e segurança sob o mesmo modelo operacional.

Referências

Perguntas frequentes
Por que não usar comentários externos?
Serviços externos são rápidos, mas UI, dados, scripts, moderação e migração ficam dependentes deles. Aqui tudo fica no site e no Cloudflare.
D1 é suficiente?
Para comentários por post_slug, ordenação por data, soft delete, rate limit e duplicados, D1 funciona bem.
Turnstile só no cliente basta?
Não. A Pages Function precisa validar o token no Siteverify antes de gravar no D1.

Comentários

Carregando comentários...

Links, e-mails e textos promocionais não podem ser publicados.

G

Gui

CEO da Acecore. Lidera sistemas de negócio, web, bancos de dados e infraestrutura, qualidade e adoção de IA da definição de problemas de negócio ao design, implantação e melhoria após o lançamento. Parte de capacidade prática em C#/.NET e também cobre PHP/JavaScript, SQL Server/PostgreSQL/MySQL e Linux/Windows Server, desenhando requisitos, escolhas tecnológicas, padrões de qualidade e operações de desenvolvimento baseadas em GitHub como um fluxo único. Incorpora IA generativa a processos de desenvolvimento, verificação e organização de informações, como uma base prática para que equipes pequenas entreguem mais rápido e com maior confiabilidade.

Definição de problemas de negócioSeleção tecnológicaDesign de sistemasC#/.NETDesign de bancos de dados/infraestruturaOperações de desenvolvimento no GitHubIA generativaDesign de fluxos de IADesign de qualidadeIntegração em campo

Quer saber mais sobre nossos serviços?

Oferecemos suporte abrangente em desenvolvimento de sistemas, design web, design gráfico e educação em TI.

Artigos relacionados

Pesquisar artigos