#cloudflare #serverless #cloud #frontend #desenvolvimento

tem uma nuvem inteira so pros comentarios do meu site

ja parou pra pensar q tem gente q usa disqus no blog? ou aquela coisa do facebook de comentario? aff, que horror ( ˘•ω•˘ )

eu nao. fiz meu proprio sistema de comentarios do zero e to usando uma infraestrutura cloud inteirinha só pra isso. é tipo, uma pagina de artigo tem la seus kb de html e css, e nos comentarios ta rodando edge function, kv storage, turnstile, rate limit, tudo serverless. soa exagerado? é pq é. mas é mt divertido~

por que nao usei disqus

simples. odeio tracker. odeio anuncio. odeio quando um site de terceiro fica injetando script no meu site e carregando coisa de outro dominio. alem disso, disqus é feio. nao combina com o visual do meu site u.u

ai fiquei pensando, sera q da pra fazer algo simples e q seja só meu? sem depender de ngm? e deu. usei cloudflare pages function com kv storage. pra quem nao sabe, kv é tipo um banco de dados chave-valor da cloudflare, mas não é um banco de dados tradicional, é mais tipo um cache global distribuido. perfeito pra comentarios~ (≧◡≦)

como funciona o fluxo

a pessoa abre o artigo, o script em js faz um fetch pra /api/comments?slug=nome-do-artigo, a edge function recebe, busca no kv a chave comments:nome-do-artigo e retorna um array de json. simples assim.

pra enviar, tem um formulario basico com nome opcional, textarea pro texto, e um campo escondido de senha de autor. se eu preencho a senha certa, o comentario sai com uma flag isAuthor como true. ai fica destacado q é eu~ (´。• ᵕ •。`)

antes de salvar, o backend verifica um honeypot. é um campo invisivel chamado website. se o bot preenche, toma ban na hora. dps vem o turnstile da cloudflare pra garantir q não é bot. se passar, verifica rate limit por ip. só pode comentar a cada 10 segundos. se tentar mais rapido, toma 429.

os comentarios ficam num json no kv, cada slug tem sua propria chave. tem limite de 500 comentarios por artigo. se passar disso, o mais antigo some. tipo fifo. bem rude, mas funciona.

Painel do Cloudflare KV mostrando as chaves de comentarios armazenadas
painel do cloudflare kv com as chaves reais. os comentarios sao literalmente um json guardado na nuvem~

threads de resposta

ah, e da pra responder comentarios. não é coisa de outro mundo não. só tem um campo parentId no json. se for null, é comentario raiz. se tiver um uuid, é resposta. o frontend só filtra e agrupa. nao precisa de sql, nao precisa de join, nada disso. json puro e feito na mao (¬‿¬)

e o texto suporta markdown basico. *italico*, **negrito**, `codigo`. eu escrevi o parser no js mesmo, bem simples, substitui regex. nao suporta tabela nem nada complicado, so o basico pra nao ficar sem graça.

o script python q injeta tudo

aqui q fica o diferentao. eu tenho um script em python chamado inject-comments.py q corre na pasta artigos/ e estudos/ e injeta a tag <script src="../js/comments.js"></script> antes do </body> de todos os htmls.

se o script ja ta la, ele pula. se nao tiver, ele bota. simples, pratico, e nao preciso ficar editando arquivo por arquivo. so rodar o py e pronto. todo artigo novo ja ganha comentario automaticamente~ ( ´ ▽ ` )ノ

eu sei q da pra fazer isso com build tool, bundler, sei la oq. mas eu gosto de static site simples. nao quero webpack, nao quero vite, nao quero nada. python puro e html puro. é uma vibe mais old school e eu curto.

serverless não é só buzzword

quando falo q é serverless, é pq literalmente nao tem servidor rodando 24h. a edge function só executa quando alguem faz request. o kv é storage distribuido. nao tem maquina virtual, nao tem container, nao tem banco de dados provisionado. é tudo on-demand.

pra um blog pequeno como o meu, isso é perfeito. nao pago por tempo ocioso, nao preciso fazer backup de banco, nao preciso configurar postgres. só pego meus htmls, jogo na cloudflare pages, e a funcao + kv cuidam do resto. minimalismo digital ate na infra~ (。♥‿♥。)

claro q se meu site virasse viral e tivesse milhoes de comentarios, provavelmente kv nao seria a melhor escolha. mas eu sou realista. meu blog nao vai viralizar. e se virar, eu penso em migrar na hora. por enquanto, é só um json bonitinho guardado na nuvem.

pra moderar, tem uma senha separada. so quem tem a senha de moderador consegue deletar comentario via metodo delete. eu sou a unica q tem a senha. fim.

as vezes eu olho pra isso tudo e penso, cara, tem uma infraestrutura cloud inteira rodando só pra umas poucas pessoas deixarem "mto bom o artigo miuna" nos comentarios. é exagero? com certeza. mas é meu exagero, e eu amo.

se vc tem um blog static e ta pensando em adicionar comentarios, considera fazer algo proprio. nao precisa ser complexo. um json, uma edge function, e um pouco de js no frontend. é mais satisfatorio do q colar um widget de terceiro e pronto. e fica com a sua cara~ (ノ◕ヮ◕)ノ*:・゚✧