[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"blog-pt-supabase-project-paused-recover":3,"blog-index-pt":452},{"id":4,"title":5,"body":6,"category":405,"cover":406,"coverAlt":407,"description":408,"draft":409,"extension":410,"faq":411,"image":429,"keywords":430,"meta":438,"navigation":439,"ogTitle":440,"path":441,"published":442,"seo":443,"stem":444,"tldr":445,"updated":450,"__hash__":451},"blog_pt\u002Fblog\u002Fsupabase-project-paused-recover.md","Projeto Supabase pausado? Seus dados continuam lá",{"type":7,"value":8,"toc":391},"minimark",[9,13,16,19,24,27,30,41,45,48,51,54,58,61,64,98,101,109,113,116,125,131,134,138,141,144,153,220,223,228,231,235,238,246,249,262,266,269,272,283,291,295,320,324,327,332,364,371,383],[10,11,12],"p",{},"Sua app parou de responder. Cada requisição volta como erro e, quando você abre\nseu painel do Supabase, o projeto tem a palavra Paused ao lado do nome, com um\nbotão Restaurar onde ficavam os painéis de sempre. Nada do que você publicou\ncausou isso, e nada avisou que estava vindo.",[10,14,15],{},"É aqui que as duas respostas de sempre erram. Uma diz que seu banco de dados\nacabou, o que nunca foi verdade. A outra diz para relaxar, que um projeto\nSupabase pausado por inatividade continua com todos os dados, então clique em\nRestaurar e siga o dia. Essa é verdade hoje e deixa de ser, em silêncio, numa\ndata que ninguém menciona.",[10,17,18],{},"Ajuda pensar no projeto como um box de um depósito. O aluguel parou, então as\nluzes estão apagadas e a porta trancada. Suas caixas estão lá dentro,\nexatamente como você deixou. É aí que seu projeto está agora, e existe uma data\ndepois da qual o box é esvaziado.",[20,21,23],"h2",{"id":22},"um-projeto-supabase-pausado-está-apagado","Um projeto Supabase pausado está apagado?",[10,25,26],{},"Não. O projeto está parado, e parar não é remover. Suas tabelas, suas linhas,\nsuas regras de Row Level Security e os arquivos que seus usuários enviaram\ncontinuam todos no disco. O que foi desligado é o banco de dados na frente\ndeles, e por isso sua app recebe um erro em cada requisição que faz.",[10,28,29],{},"Essa distância é o que torna o susto razoável. De fora a app está quebrada do\njeito que uma app quebra quando o banco de dados sumiu: listas vazias,\ncarregamentos que nunca terminam, um erro a cada salvamento. Do painel, é um\nprojeto com um botão em cima.",[10,31,32,33,40],{},"O Supabase pausa projetos no plano gratuito e só nele. Segundo a documentação\ndeles, aplicações do plano gratuito que mostram pouca atividade num período de\nsete dias podem ser pausadas para economizar recursos de servidor, e projetos\npagos não são pausados por inatividade de jeito nenhum. A\n",[34,35,39],"a",{"href":36,"rel":37},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Ffree-project-pausing",[38],"nofollow","página deles sobre pausa","\né a que vale ler, porque tudo daqui para baixo depende de números que são deles.",[20,42,44],{"id":43},"por-que-o-supabase-pausou-meu-projeto","Por que o Supabase pausou meu projeto?",[10,46,47],{},"Porque ninguém falou com ele por mais ou menos uma semana.",[10,49,50],{},"Atividade quer dizer requisições. Abrir o projeto no painel conta. Sua app\nchamando o banco conta. O que não conta é a sua app simplesmente existir, então\num projeto que subiu mês passado e ainda não achou visitantes é exatamente o\nformato que acaba pausado. Quase nunca acontece com as apps movimentadas.",[10,52,53],{},"O plano gratuito também permite dois projetos ativos por vez, e os pausados\ndeixam de contar nesse limite. Assim, um projeto que você guardou de propósito e\num que parou sozinho ficam iguais no painel, e os dois já estão correndo contra\no mesmo relógio de um ano.",[20,55,57],{"id":56},"como-restaurar-um-projeto-supabase-pausado","Como restaurar um projeto Supabase pausado?",[10,59,60],{},"Abra o painel, escolha o projeto e clique em Restaurar. Dentro da janela é esse\no procedimento inteiro, e são alguns minutos de espera em vez de uma migração.",[10,62,63],{},"O que volta é o projeto que você tinha. A mesma referência de projeto, logo a\nmesma URL de API. As mesmas tabelas, as mesmas regras, os mesmos buckets do\nStorage. O Supabase sobe projetos gratuitos na última versão menor do Postgres\ncomo parte da restauração, o que você não vai perceber.",[10,65,66,67,71,72,75,76,81,82,84,85,88,89,92,93,97],{},"As chaves são a parte que pode não voltar do jeito que estava. O Supabase avisou\nque projetos restaurados desde 1º de novembro de 2025 não recebem mais as chaves\nlegadas, ",[68,69,70],"code",{},"anon"," e ",[68,73,74],{},"service_role",". ",[34,77,80],{"href":78,"rel":79},"https:\u002F\u002Fgithub.com\u002Forgs\u002Fsupabase\u002Fdiscussions\u002F29260",[38],"Nas palavras do próprio\nSupabase",", projetos pausados\nque são restaurados correm o risco de quebrar porque não terão as chaves\nlegadas. Se o seu app ainda envia a chave ",[68,83,70],{}," antiga, uma sequência longa que\ncomeça com ",[68,86,87],{},"eyJ",", conte com as requisições dele sendo recusadas assim que o\nprojeto voltar. A solução é colocar a chave publicável do projeto, a que começa\ncom ",[68,90,91],{},"sb_publishable_",", nas configurações de ambiente do seu builder. ",[34,94,96],{"href":95},"\u002Fblog\u002Fsupabase-new-api-keys","Os dois\nformatos de chave"," estão comparados lado a lado.",[10,99,100],{},"Faça uma coisa antes de fechar a aba: tire uma cópia dos dados enquanto o banco\nestá rodando. Um projeto pausado é o único estado em que você não consegue\nexportar nada, e o motivo para fazer hoje em vez de semana que vem é o relógio\nda próxima seção.",[10,102,103,104,108],{},"Já que sua app voltou, também vale saber o que ela mostra para um estranho.\nNossa varredura gratuita lê seu site de fora e diz o que encontra. Leva uns 20\nsegundos e não precisa de conta: ",[34,105,107],{"href":106},"\u002Fsecurity-scanner","escaneie sua app",".",[20,110,112],{"id":111},"quanto-tempo-eu-tenho-para-restaurar","Quanto tempo eu tenho para restaurar?",[10,114,115],{},"Um ano a partir do dia da pausa. O Supabase coloca assim: depois que o projeto é\npausado, existe uma janela de um ano para restaurá-lo na plataforma de dentro do\nSupabase Studio.",[10,117,118,119,124],{},"Confira esse número em vez de confiar nele, porque ele já mudou uma vez. Quando\no limite foi\n",[34,120,123],{"href":121,"rel":122},"https:\u002F\u002Fsupabase.com\u002Fchangelog\u002F27497-paused-free-plan-projects-are-restorable-for-90-days",[38],"criado em junho de 2024","\neram 90 dias, e tudo que foi escrito sobre projetos pausados antes de o Supabase\nampliar isso continua dizendo 90. O artigo de ajuda deles é o sinal mais claro\ndisso: a página diz um ano, e a URL onde ela mora continua dizendo 90 dias.",[126,127],"diagram",{"alt":128,"caption":129,"src":130},"Uma linha do tempo. Ela começa num símbolo de pausa, atravessa uma faixa longa em destaque com uma chave dentro e segue além do fim da faixa até um arquivo salvo e um balde. Mais adiante, um contorno vazio riscado.","Dentro da faixa, um botão devolve o projeto. Depois dela você ainda consegue recolher os dados, e mais adiante não sobra nada para recolher.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fthe-restore-window-1600x520.png",[10,132,133],{},"Calcule a data e coloque num calendário enquanto você está pensando nisso. É um\nano a partir do dia em que o projeto pausou, que quase nunca é um ano a partir\ndo dia em que você percebeu.",[20,135,137],{"id":136},"não-tem-botão-restaurar-o-que-acontece-agora","Não tem botão Restaurar. O que acontece agora?",[10,139,140],{},"Você recebe um download em vez de uma restauração, e essa diferença é maior do\nque parece.",[10,142,143],{},"Fechada a janela, o Supabase troca a opção de restaurar por duas coisas que você\npode levar: o último backup lógico, tirado logo antes da pausa, e todos os seus\nobjetos do Storage. Os dois saem da página de resumo do projeto. Seus dados\nestão nesses arquivos. Seu projeto não está, e ele não volta.",[10,145,146,147,152],{},"O Supabase documenta\n",[34,148,151],{"href":149,"rel":150},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Frestore-project-after-90-days-pause",[38],"a migração que vem depois",".\nSão cinco passos e, entre todos, eles pedem um cliente Postgres, a CLI do\nSupabase e um token de acesso da Management API.",[154,155,156,169],"table",{},[157,158,159],"thead",{},[160,161,162,166],"tr",{},[163,164,165],"th",{},"O que você recupera",[163,167,168],{},"Como isso chega lá",[170,171,172,188,196,204,212],"tbody",{},[160,173,174,178],{},[175,176,177],"td",{},"Tabelas, linhas, tipos de coluna, índices e regras de Row Level Security",[175,179,180,181,184,185],{},"Dentro do arquivo ",[68,182,183],{},".backup",", recarregado num projeto novo com ",[68,186,187],{},"psql",[160,189,190,193],{},[175,191,192],{},"Os arquivos que seus usuários enviaram",[175,194,195],{},"Baixados à parte na página de resumo e depois copiados para os buckets novos com a CLI do Supabase",[160,197,198,201],{},[175,199,200],{},"Configurações de Auth, Realtime, Storage e API",[175,202,203],{},"O Supabase publica um script que copia tudo isso pela Management API deles",[160,205,206,209],{},[175,207,208],{},"Extensões, webhooks de banco e publicações do Realtime",[175,210,211],{},"Você religa na mão dentro do projeto novo",[160,213,214,217],{},[175,215,216],{},"Sua URL de API e suas chaves",[175,218,219],{},"Essas você não recupera. Projeto novo tem referência nova, então a URL e cada chave mudam junto, e tudo que guarda as antigas precisa ser atualizado",[10,221,222],{},"Essa última linha é a que as pessoas descobrem tarde demais. O endereço que sua\napp vinha usando faz parte do projeto que você acabou de perder, então\nreconstruir não é só um trabalho de dados. As variáveis de ambiente do seu\nbuilder, tudo que você colou direto no código, qualquer webhook, meio de\npagamento ou ferramenta de analytics apontando para a URL antiga: cada um deles\né um lugar em que a app quebra depois que os dados já estão a salvo.",[126,224],{"alt":225,"caption":226,"src":227},"Duas faixas. Na de cima um projeto pausado é aberto com uma chave e segue como o mesmo projeto, com a ligação até a app intacta. Na de baixo o projeto vira um arquivo salvo e um balde de arquivos, que alimentam um projeto diferente, e a linha da app até ele está tracejada e riscada.","As duas faixas terminam com suas linhas dentro de um banco de dados. Só uma termina com a app ainda apontando para o lugar certo.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Frestore-or-rebuild-1600x600.png",[10,229,230],{},"Depois dessa ainda tem mais uma linha, e nessa não vem salvação junto. A nota do\nSupabase é direta: depois que um projeto é apagado, todos os dados associados,\nbackups incluídos, são removidos em definitivo e não podem ser recuperados. Se\nseu painel está te oferecendo downloads agora, pegue já.",[20,232,234],{"id":233},"o-plano-gratuito-guarda-backup-enquanto-meu-projeto-está-pausado","O plano gratuito guarda backup enquanto meu projeto está pausado?",[10,236,237],{},"Existe exatamente um, e ele não é a rede de segurança que a maioria imagina.",[10,239,240,241,245],{},"O plano gratuito não tira nenhum backup agendado. Nada é copiado para lugar\nnenhum enquanto seu projeto roda, o que\n",[34,242,244],{"href":243},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","vale saber antes de alguma coisa dar errado","\ne não no meio. A cópia que aparece no painel quando a janela de restauração\nfecha é um único backup lógico tirado no instante da pausa, e ela fica\ndisponível para download exatamente no ponto em que você já não pode restaurar.",[10,247,248],{},"Daí seguem duas coisas. A cópia tem a data do dia em que seu projeto parou, o\nque acaba dando certo, porque um projeto pausado não aceitou nenhuma escrita\ndesde então. E ela mora na mesma conta do projeto de onde saiu, atrás do mesmo\nlogin, coberta pela mesma exclusão. Está no box, atrás da mesma porta.",[10,250,251,252,256,257,261],{},"A hora de tirar a sua própria cópia é enquanto o projeto volta a rodar.\n",[34,253,255],{"href":254},"\u002Fblog\u002Fback-up-supabase-free-tier","Fazer uma pelo painel sem encostar num terminal","\né o caminho do plano gratuito, e\n",[34,258,260],{"href":259},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","três formas de fazer backup de um banco Supabase","\ncompara o que cada uma custa.",[20,263,265],{"id":264},"como-evito-que-pause-de-novo","Como evito que pause de novo?",[10,267,268],{},"Dê ao projeto algo para responder a cada poucos dias, ou tire do plano gratuito.",[10,270,271],{},"O Supabase conta como atividade abrir o projeto no painel e as requisições que\nchegam da sua aplicação conectada. Uma tarefa agendada que chama seu banco uma\nvez por dia já basta para manter o contador acordado, e um servicinho de cron ou\num fluxo agendado no seu repositório de código é o jeito usual de montar isso.",[273,274,276],"callout",{"type":275},"warn",[10,277,278,282],{},[279,280,281],"strong",{},"Um ping mantém o projeto acordado e nada além disso."," Ele não é backup, não\nte diz quando sua app quebra por qualquer um dos outros motivos pelos quais apps\nquebram, e uma tarefa agendada que parou de rodar em silêncio parece igualzinha\na uma que ainda está rodando. Quem manda o ping precisa ser algo cuja falha você\nperceberia, senão a primeira notícia vai ser o mesmo selo Paused que você está\nolhando agora.",[10,284,285,286,290],{},"Mudar para o Pro tira a pergunta em vez de administrá-la. Projetos pagos não são\npausados por inatividade, e o Pro é também onde começam os backups diários do\npróprio Supabase, com uma janela de sete dias. ",[34,287,289],{"href":288},"\u002Fblog\u002Fsupabase-free-plan-limits","O que mais o Pro muda, limite por limite",", tem um artigo só para isso.",[20,292,294],{"id":293},"o-que-fazer-esta-semana","O que fazer esta semana",[296,297,298],"key-takeaways",{},[299,300,301,308,311,314,317],"ul",{},[302,303,304,305,307],"li",{},"Clique em Restaurar hoje se o botão estiver lá. São alguns minutos, e é o único caminho que mantém sua URL. Se o seu app ainda usa a chave ",[68,306,70],{}," antiga, passe para ele a chave publicável assim que o projeto voltar.",[302,309,310],{},"Se o botão sumiu, baixe antes de tudo o arquivo de backup e seus arquivos do Storage. Um projeto apagado leva os dois junto.",[302,312,313],{},"Tire sua própria cópia do banco assim que o projeto voltar, porque o plano gratuito não está tirando nenhuma para você.",[302,315,316],{},"Coloque algo num temporizador chamando seu projeto, e garanta que você perceberia se esse temporizador parasse.",[302,318,319],{},"Guarde uma cópia dos seus dados fora da sua conta do Supabase, onde nem uma pausa, nem uma janela vencida, nem uma exclusão alcancem.",[20,321,323],{"id":322},"onde-entra-o-reeve-care","Onde entra o Reeve Care",[10,325,326],{},"Uma pausa é uma queda que não parece uma queda. Suas páginas continuam\ncarregando, porque quem serve elas é o seu builder; o que parou foi tudo que\nestá atrás delas. Boa parte da explicação de por que ninguém te avisou está aí.",[126,328],{"alt":329,"caption":330,"src":331},"Um painel do Reeve Care com duas fileiras. Na primeira, o contorno tracejado de uma conta do Supabase aparece riscado enquanto arquivos salvos ficam do lado de fora, com um visto. Na segunda, um site é observado por uma lupa e um alerta é levantado.","As cópias ficam fora da conta de onde vieram. A app também é observada de fora, e uma verificação que deixa de receber resposta dispara alguma coisa.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcare-outside-and-watching-1600x520.png",[299,333,334,340,346,352,358],{},[302,335,336,339],{},[279,337,338],{},"Um projeto pausado não pode ser copiado, e uma cópia que falha te manda um\ne-mail."," O Care se conecta ao seu banco no calendário dele em vez de esperar\nsua app perceber, então a noite em que o banco para de responder é a noite em\nque você fica sabendo.",[302,341,342,345],{},[279,343,344],{},"A cópia mora fora da sua conta do Supabase."," Criptografada, em\narmazenamento que é nosso, de modo que um projeto pausado, vencido ou apagado\nnão leva os backups junto.",[302,347,348,351],{},[279,349,350],{},"Cada cópia é lida de volta antes de valer."," A data no seu painel é o último\nbackup que passou nessa verificação, nunca a última tentativa.",[302,353,354,357],{},[279,355,356],{},"Restaurar é um botão",", e antes de começar é tirado um retrato do estado\natual, então até a restauração tem um desfazer.",[302,359,360,363],{},[279,361,362],{},"Os arquivos que seus usuários enviaram também são copiados",", assim que você\nconectar seus buckets do Storage. Essa é uma segunda chave e é opcional, porque\na chave que o Supabase emite para o Storage não só lê como também escreve, e\npreferimos pedir separado a misturar com uma que não pode.",[10,365,366,367,370],{},"Dois limites, antes de você decidir qualquer coisa. Hoje o Care faz backup de\n",[279,368,369],{},"Supabase"," e de mais nada, e se seus dados moram em outro lugar a gente fala\nisso antes de você pagar, não depois. E nada disso impede um projeto de pausar:\na pausa acontece dentro do Supabase, onde somos um cliente como qualquer outro.\nO que muda é onde seus dados estão no dia em que isso acontece.",[10,372,373,374,378,379,108],{},"Deixe também os backups do próprio Supabase ligados no dia em que você for para\num plano pago. Duas cópias em dois lugares é a ideia inteira, e a mais barata\ndas duas já está na sua fatura. O que cada plano inclui está na\n",[34,375,377],{"href":376},"\u002Fpricing","página de preços",", e a cópia, a verificação e a restauração estão\ndesenhadas passo a passo na\n",[34,380,382],{"href":381},"\u002Fsupabase-backups","página de backups do Supabase",[10,384,385,386,390],{},"Antes de fechar esta aba, abra seu painel e veja qual dos dois botões seu\nprojeto está te oferecendo. Esse único dado decide se hoje são cinco minutos de\nespera ou uma reconstrução, e o\n",[34,387,389],{"href":388},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre backups junto com o\nresto do que vale confirmar quando sua app voltar a responder.",{"title":392,"searchDepth":393,"depth":393,"links":394},"",3,[395,397,398,399,400,401,402,403,404],{"id":22,"depth":396,"text":23},2,{"id":43,"depth":396,"text":44},{"id":56,"depth":396,"text":57},{"id":111,"depth":396,"text":112},{"id":136,"depth":396,"text":137},{"id":233,"depth":396,"text":234},{"id":264,"depth":396,"text":265},{"id":293,"depth":396,"text":294},{"id":322,"depth":396,"text":323},"Backups","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcover-1200x630.png","Um símbolo de pausa ao lado de uma caixa de projeto fechada, com o banco de dados e os arquivos enviados ainda dentro.","O Supabase pausou seu projeto depois de uma semana sem atividade. Nada foi apagado, Restaurar fica ao lado do nome e você tem um ano antes disso mudar.",false,"md",[412,414,417,420,423,426],{"q":23,"a":413},"Não. A pausa para o banco de dados, ela não remove nada. Suas tabelas, suas linhas, suas regras de Row Level Security e os arquivos enviados continuam todos no disco, e é por isso que o painel te oferece um botão Restaurar em vez de um pedido de desculpas. O que a pausa quebra mesmo é a sua app, porque cada requisição que ela faz agora volta como erro.",{"q":415,"a":416},"Quanto tempo eu tenho para restaurar um projeto Supabase pausado?","Um ano a partir do dia da pausa. O Supabase descreve isso como uma janela de um ano para restaurar o projeto de dentro do Supabase Studio. Esse número já mudou uma vez: eram 90 dias quando o limite foi criado em junho de 2024, e o artigo de ajuda que o Supabase publica sobre o assunto ainda carrega 90 dias na URL. Leia o valor atual na página deles sobre pausa e não na de mais ninguém.",{"q":418,"a":419},"Meu projeto não tem botão Restaurar. E agora?","A janela fechou e o Supabase trocou esse botão por dois downloads: o último backup lógico, tirado logo antes da pausa, e todos os seus arquivos do Storage. Os dois ficam na página de resumo do projeto. Seus dados estão neles, e voltar a ter uma app funcionando passa por criar um projeto novo e recarregar esses arquivos nele. Baixe os dois hoje, porque um projeto apagado leva os backups junto e em definitivo.",{"q":421,"a":422},"Minha URL de projeto e minhas chaves de API continuam as mesmas?","Se você clicar em Restaurar dentro da janela, a URL sim: o projeto volta com a mesma referência de projeto com a qual sua URL é montada. As chaves, talvez não. O Supabase avisou que projetos restaurados desde 1º de novembro de 2025 voltam sem as chaves legadas anon e service_role, então um app que ainda usa a chave anon precisa da chave publicável do projeto no lugar dela. Se você tiver que reconstruir num projeto novo, as duas coisas mudam: projeto novo tem referência nova, então a URL da API e todas as chaves mudam junto. Isso significa atualizar as variáveis de ambiente do seu builder e tudo mais que tenha o endereço antigo anotado, webhooks e serviços de terceiros incluídos.",{"q":424,"a":425},"Como evito que o Supabase pause meu projeto de novo?","Dê a ele algo para responder pelo menos uma vez por semana, ou tire do plano gratuito. O Supabase conta como atividade abrir o painel e as requisições que chegam da sua aplicação conectada, então uma tarefa agendada que chama seu projeto uma vez por dia mantém o contador acordado. Mudar para o Pro tira a pergunta de vez, porque projetos pagos não são pausados por inatividade, e é lá também que começam os backups diários.",{"q":427,"a":428},"Meu projeto sumiu do painel, não está pausado. Dá para recuperar?","Primeiro descubra qual dos dois casos é o seu, porque são situações diferentes. Um projeto pausado continua na lista, com Restaurar ao lado do nome e os dados congelados no disco. Se ele não aparece de jeito nenhum, o painel não oferece nenhum controle para desfazer a exclusão: sobram um ticket de suporte com o Supabase e uma cópia que você mesmo fez. Essa segunda é o argumento inteiro para ter um backup antes do dia em que ele faz falta.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",[431,432,433,434,435,436,437],"projeto supabase pausado","supabase plano gratuito pausado","restaurar projeto supabase pausado","recuperar projeto supabase apagado","reativar projeto supabase","supabase inativo 7 dias","manter projeto supabase ativo",{},true,"Projeto Supabase pausado? O que fazer agora","\u002Fblog\u002Fsupabase-project-paused-recover","2026-09-12",{"title":5,"description":408},"blog\u002Fsupabase-project-paused-recover",[446,447,448,449],"Um projeto Supabase pausado por inatividade não é um projeto apagado. Os dados estão congelados no disco e o painel tem um botão Restaurar ao lado do nome.","Você tem um ano a partir do dia da pausa para restaurá-lo pelo painel do Supabase. Projetos gratuitos pausam depois de cerca de uma semana de pouca atividade.","Passado esse ano, o botão Restaurar vira um download, e o único caminho de volta é um projeto novo com URL nova e chaves novas.","O plano gratuito não copia nada enquanto seu projeto roda, então o único backup que existe é o tirado no instante da pausa.","2026-09-30","3zRh_pYckhPCFbIp40qAZEozc5DQVvCQjbB5o-n8SQU",[453,460,466,472,478,484,490,496,502,508,514,519,524,530,536,542,547,553,559,565,571,577,583,589,595,601,607,613,619,625,626,632,638,644,650,656,662,668,674,680,686,692,698,703,709,715,721,727,733,739,745,751,757,763,768,773,778,784,789,794],{"path":454,"title":455,"description":456,"published":457,"category":458,"image":459,"draft":409},"\u002Fblog\u002Fbase44-security-scan","Scan de segurança do Base44: o que só ele enxerga","O scan de segurança do Base44 verifica sete tipos de problema por dentro. Esta é a metade que ele lê e mais ninguém, e a metade que ele nunca olha.","2026-10-10","Noções de segurança","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":461,"title":462,"description":463,"published":464,"category":458,"image":465,"draft":409},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Sua chave de API vazou. A ordem em que agir","Uma chave de API vazou e você não sabe o que fazer primeiro. Nem toda chave no seu frontend é um vazamento, e a ordem importa mais que a pressa.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":467,"title":468,"description":469,"published":470,"category":458,"image":471,"draft":409},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sem desligar o RLS","\"Infinite recursion detected in policy for relation\" significa que a sua policy perguntou à tabela que ela protege. Veja como quebrar o círculo.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":473,"title":474,"description":475,"published":476,"category":458,"image":477,"draft":409},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" no Supabase, e a correção errada","\"No API key found in request\" significa que sua requisição chegou ao Supabase sem chave. Quase toda resposta aponta para as regras do seu banco.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":479,"title":480,"description":481,"published":482,"category":458,"image":483,"draft":409},"\u002Fblog\u002Fis-base44-safe","O Base44 é seguro? O que vimos em 5.442 apps Base44","O Base44 é seguro? Rodamos nove verificações em 5.442 apps Base44 no ar. Quase todas tiraram B por motivos que o dono nunca escolheu.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":485,"title":486,"description":487,"published":488,"category":458,"image":489,"draft":409},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Esconder uma chave de API: mova para uma Edge Function do Supabase","Esconder uma chave de API é tirá-la do navegador, e uma Edge Function do Supabase é o menor lugar para guardá-la. Dois passos em volta pesam mais.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":491,"title":492,"description":493,"published":494,"category":458,"image":495,"draft":409},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Seu arquivo .env está exposto? Os doze caminhos para testar","Seu arquivo .env está exposto no seu próprio servidor web? Doze endereços dizem isso em um minuto, e um acerto significa que tudo nele já é público.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":497,"title":498,"description":499,"published":500,"category":458,"image":501,"draft":409},"\u002Fblog\u002Fis-v0-safe","Segurança do v0: os 1.790 aplicativos v0 escaneados tiraram A","A segurança do v0 medida em 1.790 aplicativos v0 no ar: todos tiraram A. Só 17 citavam um banco de dados, e é sobretudo isso que esse A mede.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":503,"title":504,"description":505,"published":506,"category":458,"image":507,"draft":409},"\u002Fblog\u002Fis-bolt-safe","O Bolt é seguro? O que vimos em 1.123 aplicativos Bolt","O Bolt é seguro? Passamos 1.123 aplicativos Bolt no ar por nove verificações. A hospedagem saiu limpa. Os achados: chaves e tabelas abertas nos aplicativos.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":509,"title":510,"description":511,"published":512,"category":458,"image":513,"draft":409},"\u002Fblog\u002Fis-supabase-down-or-your-app","O Supabase caiu ou o problema é o seu app? Como saber","O Supabase caiu ou o problema é o seu app? Um projeto pausado, um banco cheio e um erro seu parecem iguais. Quatro verificações separam os casos.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":515,"title":516,"description":517,"published":450,"category":458,"image":518,"draft":409},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","O Supabase criptografa meus dados? Sim. Veja o que isso impede","O Supabase criptografa os dados? Sim: AES-256 em repouso, TLS em trânsito, SOC 2 e ISO 27001. O que cada um cobre, e o vazamento que nenhum deles impede.","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":288,"title":520,"description":521,"published":522,"category":458,"image":523,"draft":409},"Quanto custa o Supabase? Os limites do plano gratuito","Quanto custa o Supabase: o plano gratuito tem 500 MB de banco, 5 GB de egress e nenhum backup. O que acontece em cada limite e o que o Pro de $25 muda.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":525,"title":526,"description":527,"published":528,"category":405,"image":529,"draft":409},"\u002Fblog\u002Ftest-your-supabase-backup","Teste o backup do seu Supabase antes do dia em que precisar","Como testar o backup do seu Supabase: restaurar num projeto de teste, contar as linhas, entrar e procurar a linha que falta num arquivo cortado.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":531,"title":532,"description":533,"published":534,"category":405,"image":535,"draft":409},"\u002Fblog\u002Fsupabase-backup-github-action","Backup grátis do Supabase com uma GitHub Action, e a pegadinha","Um backup do Supabase com GitHub Action é grátis e serve para muitos apps. O workflow, a connection string certa e o egress de cada execução.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":537,"title":538,"description":539,"published":540,"category":405,"image":541,"draft":409},"\u002Fblog\u002Fdownload-your-supabase-backup","Por que você não consegue baixar seu backup do Supabase","Você não consegue baixar seu backup do Supabase num projeto atual, porque a cópia diária é um snapshot físico. Como conferir e como ter uma cópia só sua.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":543,"title":544,"description":545,"published":540,"category":458,"image":546,"draft":409},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": o grant que falta","A partir de 30 de outubro, uma tabela nova no Supabase responde \"permission denied for table\" até receber um grant. O e-mail mostra só metade.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":548,"title":549,"description":550,"published":551,"category":458,"image":552,"draft":409},"\u002Fblog\u002Fopen-api-endpoint-exposed","Um endpoint de API aberto é um problema? Leia o JSON","Seu scan apontou um endpoint de API aberto. Se isso importa depende do que voltou, e a maioria dos que encontramos era da própria plataforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":554,"title":555,"description":556,"published":557,"category":458,"image":558,"draft":409},"\u002Fblog\u002Flovable-security-scan","Escaneamento de segurança do Lovable: o que ele não prova","Escaneamento de segurança do Lovable: o que o Quick scan e o Deep scan checam, quando cada um roda, e a única coisa que nenhum escaneamento por dentro prova.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":560,"title":561,"description":562,"published":563,"category":405,"image":564,"draft":409},"\u002Fblog\u002Fsupabase-backup-auth-users","Por que seu dump do Supabase não tem usuários dentro","Rode supabase db dump sozinho e você recebe a forma do seu banco e nenhuma das linhas dele, sem o schema auth onde seus usuários moram.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":566,"title":567,"description":568,"published":569,"category":458,"image":570,"draft":409},"\u002Fblog\u002Fdomain-and-certificate-expiry","Domínio expirado, site fora do ar: o que acontece agora","Seu domínio expirou e seu site está fora do ar. O relógio que começa a correr, por que o certificado é o problema menor, e como conferir os dois.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":572,"title":573,"description":574,"published":575,"category":458,"image":576,"draft":409},"\u002Fblog\u002Fis-lovable-safe","O Lovable é seguro? O que vimos em 18.554 aplicativos Lovable","O Lovable é seguro? Passamos 18.554 aplicativos Lovable no ar por nove verificações. A plataforma foi a mais limpa de cinco. Os achados estavam nos aplicativos.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":578,"title":579,"description":580,"published":581,"category":458,"image":582,"draft":409},"\u002Fblog\u002Fvibe-coded-app-security-checklist","O checklist de segurança do vibe coding, em nove verificações","Um checklist de segurança do vibe coding com nove itens, cada um verificável no seu app de fora por qualquer pessoa, e cada um com um teste de uma linha.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":584,"title":585,"description":586,"published":587,"category":458,"image":588,"draft":409},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Uma chave secreta da Stripe no frontend pode mover dinheiro","Uma chave secreta da Stripe exposta no seu frontend pode reembolsar, cobrar e ler cada ficha de cliente que você tem. Sua chave pk_live_ é que deve estar aí.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":590,"title":591,"description":592,"published":593,"category":458,"image":594,"draft":409},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variáveis de ambiente do Vite expostas: o prefixo diz publique isto","Variáveis de ambiente do Vite expostas no seu app: fizeram o que o prefixo pediu. VITE_ e NEXT_PUBLIC_ significam publique isto, e a IA nunca soube o custo.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":596,"title":597,"description":598,"published":599,"category":458,"image":600,"draft":409},"\u002Fblog\u002Fbase44-source-maps","Segurança no Base44: o que um scan aponta e o que é seu para corrigir","Segurança no Base44 em 5.438 apps escaneados: três achados em quase todos são da plataforma, o source map é o selo do Base44, e a sua parte é uma lista curta.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":602,"title":603,"description":604,"published":605,"category":458,"image":606,"draft":409},"\u002Fblog\u002Fis-cursor-ai-safe","O Cursor AI é seguro? O editor, o código e o app que você publicou","O Cursor AI é seguro? Três perguntas em uma busca: o que o Cursor guarda, o que o código que ele escreve erra, e se o app que você publicou está aberto.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":608,"title":609,"description":610,"published":611,"category":458,"image":612,"draft":409},"\u002Fblog\u002Fis-replit-safe","O Replit é seguro? O que vimos em 3.042 aplicativos Replit no ar","O Replit é seguro? Passamos 3.042 aplicativos Replit no ar por nove verificações externas. Os achados estavam no aplicativo publicado, não no host.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":614,"title":615,"description":616,"published":617,"category":405,"image":618,"draft":409},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: sua cópia do banco não tem nenhum arquivo","Um Supabase storage backup é uma tarefa à parte. Os backups do banco guardam a lista dos seus arquivos e nenhum deles, então cada upload fica quebrado.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":620,"title":621,"description":622,"published":623,"category":405,"image":624,"draft":409},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery do Supabase: preço e limites","O point-in-time recovery do Supabase rebobina seu banco para qualquer segundo da última semana. Custa $100 por mês além do Pro e cobre só o banco.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":441,"title":5,"description":408,"published":442,"category":405,"image":429,"draft":409},{"path":627,"title":628,"description":629,"published":630,"category":458,"image":631,"draft":409},"\u002Fblog\u002Fsafest-ai-app-builder","Qual builder de apps com IA é mais seguro? 30.998 apps testados","Qual builder de apps com IA é mais seguro? Escaneamos 30.998 apps no ar do Lovable, Base44, Replit, v0 e Bolt. O builder não é o que decide sua nota.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":633,"title":634,"description":635,"published":636,"category":458,"image":637,"draft":409},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Ative Row Level Security em toda tabela do Supabase e comprove","Ativar Row Level Security no Supabase sem política fecha a tabela por completo. Uma política sem a chave ligada não faz nada. Aqui está o SQL, e o teste.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":639,"title":640,"description":641,"published":642,"category":458,"image":643,"draft":409},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": o que o aviso não vê","O Supabase marca \"RLS disabled in public\" como erro. Ele não diz nada sobre a política de leitura que deixa a sua tabela igualmente aberta.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":645,"title":646,"description":647,"published":648,"category":458,"image":649,"draft":409},"\u002Fblog\u002Frotate-supabase-service-role-key","Como rotacionar uma chave service_role do Supabase vazada","O Supabase manda fechar o vazamento primeiro. Outros guias mandam rotacionar agora. O que vale depende de para onde a sua chave service_role vazou.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":651,"title":652,"description":653,"published":654,"category":458,"image":655,"draft":409},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Scanners de segurança para vibe coding comparados, o nosso incluído","O melhor scanner de segurança para vibe coding depende de três perguntas que nenhuma lista de recursos responde. Dez ferramentas comparadas, com preços.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":657,"title":658,"description":659,"published":660,"category":458,"image":661,"draft":409},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: faça você mesmo as cinco verificações","Um Supabase security checker lê o seu app publicado em vez das configurações do projeto. Aqui estão as cinco verificações e como fazer cada uma sozinho.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":663,"title":664,"description":665,"published":666,"category":458,"image":667,"draft":409},"\u002Fblog\u002Fvibe-coding-security-scanner","Scanner de segurança para vibe coding: o que ele não vê","Um scanner de segurança para vibe coding lê seu app no ar, de fora. O que isso cobre, as quatro coisas que ele não consegue ver e como ler o resultado.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":669,"title":670,"description":671,"published":672,"category":458,"image":673,"draft":409},"\u002Fblog\u002Fmissing-security-headers","Cabeçalhos de segurança faltando: quando isso importa","Cabeçalhos de segurança faltando é o achado que nosso scanner mais imprime. Contra o que eles protegem e quando são a linha menos urgente do relatório.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":675,"title":676,"description":677,"published":678,"category":458,"image":679,"draft":409},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Sua chave de API da OpenAI está exposta no frontend. Troque-a.","Uma chave de API da OpenAI exposta no frontend não pode ser presa a um domínio. Troque-a hoje, mova a chamada para o seu servidor e limite o gasto.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":681,"title":682,"description":683,"published":684,"category":458,"image":685,"draft":409},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Chave de API exposta no frontend: o que 30.998 apps entregam","Uma chave de API exposta no seu frontend costuma ser uma chave do Google Maps. Escaneamos 30.998 apps vibe-coded e contamos quais segredos vazam de verdade.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":687,"title":688,"description":689,"published":690,"category":405,"image":691,"draft":409},"\u002Fblog\u002Fsupabase-backup-tools-compared","Ferramentas de backup do Supabase comparadas, a nossa incluída","Quatro tipos de ferramenta de backup do Supabase, o que cada uma copia de verdade e quando uma GitHub Action gratuita ganha de pagar, nós inclusive.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":693,"title":694,"description":695,"published":696,"category":458,"image":697,"draft":409},"\u002Fblog\u002Freplit-secrets-explained","Como usar secrets no Replit, e o que ainda assim é publicado","Como usar secrets no Replit: adicionar um, ler de volta e resolver as duas causas do undefined. E as chaves que a ferramenta Secrets não consegue proteger.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":254,"title":699,"description":700,"published":701,"category":405,"image":702,"draft":409},"Backups do plano gratuito do Supabase: como fazer sem terminal","No plano gratuito do Supabase não existe backup nenhum: a cópia é você que faz. Como fazer uma pelo painel e o que a rota do CSV deixa para trás.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":704,"title":705,"description":706,"published":707,"category":458,"image":708,"draft":409},"\u002Fblog\u002Fis-supabase-secure","O Supabase é seguro? É. Seu projeto é outra pergunta","O Supabase é seguro? A plataforma é auditada, criptografada e passa por pentests. A documentação deles diz onde isso termina e começam suas configurações.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":710,"title":711,"description":712,"published":713,"category":458,"image":714,"draft":409},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Onde ficam as chaves de API do Supabase: anon, service_role e URL","A URL do projeto, a chave anon e a chave service_role ficam todas numa página do painel. Aqui está onde ela fica, e qual dos quatro valores vai no seu app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":716,"title":717,"description":718,"published":719,"category":458,"image":720,"draft":409},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy no Supabase. E agora?","\"New row violates row-level security policy\" significa que o Supabase recusou uma escrita. O conserto rápido reabre a tabela para qualquer um.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":722,"title":723,"description":724,"published":725,"category":458,"image":726,"draft":409},"\u002Fblog\u002Fcors-wildcard-security-risk","Um curinga CORS é um risco de segurança? Quase nunca.","Um curinga CORS é um risco de segurança? Em geral é o padrão do seu builder e não entrega nada que o seu servidor já não desse a qualquer um que pedisse.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":728,"title":729,"description":730,"published":731,"category":405,"image":732,"draft":409},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Branching do Supabase não é backup. Ele só anda para a frente.","Por que o branching do Supabase não é backup: um branch começa sem os seus dados e um merge só leva o esquema. Para que ele serve e o que usar no lugar.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":734,"title":735,"description":736,"published":737,"category":405,"image":738,"draft":409},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Como restaurar um backup do Supabase, e o que quebra depois","Como restaurar um backup do Supabase pelo painel ou por um arquivo de dump, o que a restauração substitui e por que o seu app pode continuar quebrado no fim.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":740,"title":741,"description":742,"published":743,"category":458,"image":744,"draft":409},"\u002Fblog\u002Fsupabase-storage-bucket-public","Seu bucket do Supabase Storage é público. Isso é um problema?","Um bucket público do Supabase Storage significa que quem tem a URL de um arquivo pode abri-lo. Não significa que alguém possa listar o que está lá dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":746,"title":747,"description":748,"published":749,"category":458,"image":750,"draft":409},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Uma chave de API do Google no frontend é um problema?","Uma chave de API do Google exposta no seu frontend é a chave que nosso scanner mais encontra, e quase sempre está tudo bem. Um ajuste gratuito decide isso.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":752,"title":753,"description":754,"published":755,"category":405,"image":756,"draft":409},"\u002Fblog\u002Fai-agent-deleted-my-database","Um agente de IA apagou meus dados do Supabase. O que eu recupero?","Um agente de IA apagou dados do seu banco. O que você recupera já estava decidido antes de ele rodar, e os próximos minutos decidem o resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":758,"title":759,"description":760,"published":761,"category":458,"image":762,"draft":409},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Qualquer um consegue ler seu banco Supabase? Testamos 3.680 apps","Qualquer um consegue ler seu banco de dados Supabase sem fazer login? Escaneamos 30.998 apps no ar criadas com builders de IA e medimos quantas dizem que sim.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":764,"title":765,"description":766,"published":761,"category":458,"image":767,"draft":409},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps expostos: seu app está publicando o código original","Um source map exposto deixa qualquer um ler o código original do seu app, comentários incluídos. A verificação de 30 segundos e o que importa de verdade.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":95,"title":769,"description":770,"published":771,"category":458,"image":772,"draft":409},"As novas chaves de API do Supabase: qual vai no seu app?","O Supabase trocou anon e service_role por chaves publicáveis e secretas. Qual delas pertence ao seu app e qual nunca deve estar lá?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":243,"title":774,"description":775,"published":776,"category":405,"image":777,"draft":409},"O Supabase faz backup do meu banco de dados? Depende do plano.","O Supabase faz backup do seu banco de dados? Todo dia nos planos pagos, e nada no gratuito. Como descobrir o que você tem e o que essa cópia não cobre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":779,"title":780,"description":781,"published":782,"category":458,"image":783,"draft":409},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","O Supabase Row Level Security está ligado. A tabela continua pública.","Ligar o Supabase Row Level Security não protege uma tabela. Quem protege são as políticas, e a que consertou o seu app pode deixar qualquer um entrar.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":785,"title":786,"description":787,"published":782,"category":405,"image":788,"draft":409},"\u002Fblog\u002Fversion-history-is-not-a-backup","O histórico de versões não é backup. Ele não desfaz um delete.","Lovable e Bolt guardam um histórico de versões do seu código. Seu banco de dados é um serviço à parte, e voltar atrás não traz os seus dados de volta.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":259,"title":790,"description":791,"published":792,"category":405,"image":793,"draft":409},"Três formas de fazer backup de um banco Supabase, e o que falta","O painel, o pg_dump e um serviço gerenciado. O que cada um salva de verdade, o que deixa de fora sem avisar e qual sobrevive a perder a conta.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":795,"title":796,"description":797,"published":792,"category":458,"image":798,"draft":409},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Quais chaves de API são seguras no navegador e quais não são","Sua chave anon do Supabase foi feita para ser pública. Sua chave service_role não, e ela ignora todas as regras que você criar. Como diferenciar as duas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618971829]