Telas Paraná
Telas Paraná: cercamento e proteção perimetral, Londrina/PR. 40 anos, três gerações.
o_problema
Uma empresa de cercamento com 40 anos cujo único canal de entrada era telefone e boca a boca. Sem captura de contato, sem atribuição de marketing, sem registro de quem pediu orçamento. Todo lead que não ligava naquele instante era perdido.
o_que_faz
- Site institucional one-page orientado à conversão: hero, números, produtos, serviços, segmentos, obras realizadas, depoimentos e contato.
- Todos os CTAs montam uma mensagem contextual e abrem o WhatsApp já preenchido, o caminho de conversão real do negócio.
- Captura de leads com nome, WhatsApp, e-mail, interesse e consentimento LGPD, gravado em schema próprio com rastreio de UTMs.
- Autenticação de cliente completa: cadastro tradicional e login social Google por BFF server-side, área de conta protegida, conclusão de cadastro para contas Google incompletas e upload de avatar.
- Avaliações do Google em tempo real via Places API, filtradas em quatro estrelas ou mais, com fallback estático.
- Galeria de 25 fotos WebP em três categorias, player de vídeo institucional próprio que pausa ao sair da viewport, e tema dark/light sem flash.
stack
frontend
Next.js (App Router) · TypeScript · Tailwind CSS v4 · Vitest
backend
C# / .NET 10 · ASP.NET Core · EF Core 10 + Npgsql · PostgreSQL 16 · xUnit + Moq
infra
Google Cloud · Terraform · Cloud Run · Cloud SQL · GitHub Actions
medido
- Commits
- 368histórico git, 24/03/2026 a 28/06/2026
- Versão em produção
- v2.4.6changelog do README
- Ambientes provisionados por Terraform
- 3envs/ contém DEV, HML, PROD
como_foi_construido
Evolução por versões numeradas com changelog mantido no README, da v1.0.0 à v2.4.6. O padrão visível no histórico: cada versão entrega funcionalidade, e a seguinte é quase sempre hardening de segurança do que acabou de entrar. A v2.1.0 entregou auth; a v2.1.1 corrigiu verificação de assinatura JWT, open redirect e MIME do avatar. A v2.4.0 entregou avatar; a v2.4.1 trocou PBKDF2 por Argon2id com parâmetros OWASP: 19 MiB, duas iterações, paralelismo um.
A v2.4.2 foi uma remediação completa após auditoria de cybersecurity e LGPD: guard anti-pwn-request no CD, rate limiting pelo IP real do cliente atrás do Cloud Run via forwarded headers, rotação atômica de refresh token com detecção de reuso que revoga a família inteira, mitigação de enumeração de usuário por timing no login, CPF mascarado nas respostas, PII removida dos claims do JWT, CSP nonce-based enforced, e containers não-root com imagens base pinadas por digest.
Segurança é trilha própria, com issues numeradas rastreadas até um apply validado em produção. A v2.4.4 fechou a exposição pública da users-api (invoker restrito à service account do frontend, autenticação service-to-service por ID token do Google) e migrou avatares de bucket público para bucket privado servido por proxy autenticado.
Infraestrutura é Terraform de ponta a ponta, com módulos e configuração por ambiente para DEV, HML e PROD: três aplicações em Cloud Run, Postgres no Cloud SQL, seis segredos no Secret Manager, imagens no Artifact Registry e três service accounts least-privilege. O CD roda em GitHub Actions com Workload Identity Federation, então nenhuma chave de service account é versionada.
limitacoes_conhecidas
- A validação de AllowedHosts está adiada, e o README diz o motivo: fixar a lista errada derruba o deploy no Cloud Run, e o ganho é marginal diante do que já existe.
- O segredo de assinatura HS256 é compartilhado entre a users-api e o BFF. A migração para RS256 está registrada como baixa prioridade, não como descuido.
- A verificação de e-mail no cadastro tradicional continua pendente. O login Google já chega com endereço verificado, então a lacuna afeta só um dos dois caminhos de cadastro.
roadmap
- v2.5: painel CRM de leads
- v2.6: validação de contato por token
- v2.7: chatbot IA/RAG qualificando leads sobre o catálogo
- v2.8: pagamentos e marketplace
- Migração para GKE conforme o tráfego exigir
tempo de código rastreado
6 hrs 43 mins Fonte: WakaTime · rastreado desde 2026-03-17 até agora