Como suas fotos ficam guardadas

Toda foto que você sobe para a Leint passa por três camadas independentes antes de aparecer na galeria do seu cliente. Funciona assim:

Camada 1 — Onde sua foto mora (Cloudflare R2)

Suas fotos ficam num storage profissional da Cloudflare — a mesma infraestrutura que agências fotográficas internacionais usam. A Cloudflare declara durabilidade de 99,999999999% — onze noves, segundo a modelagem estatística da própria provedora (verificável em developers.cloudflare.com/r2). Em linguagem de fotógrafo: a expectativa é perder menos de uma foto a cada cem bilhões de fotos por ano.

Vale a distinção: durabilidade mede a probabilidade de uma foto que está armazenada continuar acessível — é diferente de uptime regional, que pode oscilar pontualmente em qualquer infraestrutura de internet.

A foto nunca fica salva no nosso servidor de aplicação nem no nosso banco de dados. O servidor manda a foto direto pro storage e busca direto de lá. Menos passos, menos pontos de falha.

Camada 2 — Cópia em outro continente (Backblaze, Amsterdã)

A cada hora, um robô espelha tudo da Camada 1 para um segundo provedor, em outro continente — Backblaze B2, data center de Amsterdã.

Esse segundo backup tem uma trava chamada Object Lock COMPLIANCE: por sete dias, mesmo que alguém com a senha de admin tente apagar uma foto, a foto fica. É a rede de proteção contra dois tipos de cenário extremo: erro humano dentro da Leint e uma conta da Cloudflare comprometida.

Camada 3 — Backup do banco de dados (Supabase)

Onde ficam as informações dos seus clientes, propostas, contratos, links de galeria e tudo que não é foto: num banco de dados hospedado no Supabase, com backup automático diário e 7 dias de retenção. Se algo der errado no banco, conseguimos voltar para um snapshot de até uma semana atrás.

Resumindo em uma frase: para você perder uma foto na Leint, três camadas teriam que falhar ao mesmo tempo, em provedores e continentes diferentes. Não é impossível — nada é. Mas é pra ser muito improvável.


Cada conta enxerga só a própria casa

A Leint é uma plataforma compartilhada — vários fotógrafos usam o mesmo sistema. Mas o sistema é desenhado pra que uma conta nunca consiga enxergar dado de outra. Vale para fotos, propostas, contratos, clientes, equipe, financeiro: tudo.

A peça técnica chama Row Level Security. É uma política aplicada na borda do banco que filtra automaticamente toda consulta pelo dono da conta. Não é um filtro que o programador "lembra de colocar" — é uma política que o banco aplica antes de devolver qualquer resposta. Mesmo se um dia alguém esquecer de filtrar, o banco filtra sozinho.


Senhas, login e acesso


O que ainda estamos construindo

A gente fez uma auditoria de segurança honesta no app no começo de maio. Mapeamos o que já existe e o que precisa ser melhorado. Em vez de esconder, preferimos contar. Aqui está o que está em desenvolvimento:

A gente mantém um backlog técnico priorizado dessas e outras melhorias internamente. À medida que cada item entra no ar, atualizamos esta página com a data exata.


Conformidade com a LGPD

A Leint segue a Lei Geral de Proteção de Dados (Lei nº 13.709/2018). Em particular:


Reportar vulnerabilidade

Se você é desenvolvedor, pesquisador de segurança ou só um usuário curioso que encontrou algo estranho:

security@leint.com.br

A gente lê todo report. Se for um problema real, agradecemos publicamente (com sua permissão) e creditamos quem reportou.

O que pedimos para que o reporter atue de boa-fé (e mantenha proteção contra responsabilização sob a Lei nº 12.737/2012 e o art. 154-A do Código Penal):

— Testar exclusivamente em conta criada por você mesmo, no ambiente público da plataforma.

— Não acessar, baixar, ler ou modificar dados de outras contas, fotógrafos ou Clientes Finais.

— Não realizar testes que comprometam disponibilidade (DDoS, scraping massivo, fuzzing destrutivo).

— Reportar a falha em primeira mão para security@leint.com.br antes de divulgar publicamente, dando à Leint janela razoável de mitigação (mínimo 30 dias corridos).

Pesquisadores que respeitarem essas condições terão garantia de não-judicialização pela Leint, mesmo se involuntariamente acessarem informação sensível durante o teste de boa-fé.


Para quem quer mais detalhe técnico

Detalhes técnicos (clique para expandir)

Stack

  • Frontend Angular hospedado na Vercel (CDN global, TLS 1.3)
  • Backend Supabase (Postgres 15 + Edge Functions Deno)
  • Storage Cloudflare R2 (compatível S3, região ENAM)
  • Backup mirror Backblaze B2 (S3-compatible, região EU-Central-003 / Amsterdã)
  • Pagamentos Asaas (PCI-DSS Nível 1, certificado por auditoria externa)

Multi-tenant isolation

  • Row Level Security (RLS) ativado em todas as tabelas com dado de cliente
  • Política padrão: tenant_id = auth.uid() com SECURITY DEFINER em funções helper
  • Edge Functions de I/O com storage executam verificação dupla de tenant antes de qualquer delete

Backup

  • Supabase Pro: backup diário automatizado, 7 dias de retenção
  • Cloudflare R2: Bucket Lock 7 dias (proteção contra deleção em massa)
  • Backblaze B2: Object Lock COMPLIANCE 7 dias por objeto + bucket flag
  • Worker de espelhamento incremental diário (cron 05:00 UTC), Bandwidth Alliance (sem custo de egress)

Auth

  • Supabase Auth (GoTrue) com bcrypt + JWT RS256
  • Cookies cross-domain app.leint.com.brleint.com.br com SameSite=Lax; Secure; HttpOnly
  • Sessões com refresh token rotation
  • 2FA obrigatório em todos os painéis administrativos (Supabase, GitHub, Vercel, Cloudflare, Backblaze, Brevo)

Pagamentos

  • Asaas (gateway PCI-DSS Nível 1) — dados de cartão não são armazenados pela Leint

Em desenvolvimento

  • Soft delete + lixeira (30 dias)
  • Export massivo em um clique
  • Excluir conta na UI
  • Trilha de auditoria consolidada
  • 2FA opcional para clientes