Skip to content

Repository files navigation

Cadastro — Material do Capitão 2026

Site de cadastro de apoiadores para envio de material de campanha. Site estático: HTML, CSS e JavaScript puros, sem build e sem servidor.

Como funciona

Visitante digita o CEP
        ↓
ViaCEP (reserva: BrasilAPI)  →  preenche rua, bairro, cidade e UF
        ↓
Visitante completa nome e número
        ↓
POST para docs.google.com/forms/.../formResponse
        ↓
Resposta cai na planilha do Google Forms da campanha

Não existe backend. O formulário do Google continua sendo o banco de dados; este site é apenas uma interface melhor na frente dele.

Publicar

O site é estático. Em qualquer hospedagem comum, basta subir index.html, privacidade.html e a pasta assets/. Exige HTTPS — sem ele o navegador pode bloquear as chamadas às APIs de CEP, e a política de privacidade promete conexão criptografada.

ErexHost (deploy atual)

O Dockerfile na raiz existe por um motivo específico: o painel só aceita portas entre 1024 e 65535, e a imagem oficial do nginx escuta na 80. Sem ele, o proxy da plataforma tenta falar com a porta configurada, não encontra ninguém e devolve 502 Bad Gateway em todos os caminhos — inclusive nos que não existem, que deveriam dar 404.

A porta vem da variável de ambiente PORT (padrão 4007, definido no Dockerfile). O entrypoint da imagem oficial substitui ${PORT} dentro de deploy/default.conf.template na hora de subir o container.

Se a plataforma trocar a porta do app:

  1. Painel → Configurações → Deploy → Porta interna: anote o novo número
  2. Painel → Variáveis: crie PORT com esse mesmo número
  3. Redeploy

Não é preciso mexer no código. Os dois números só precisam bater.

Diretório raiz no painel: deixe vazio — o index.html está na raiz do repositório.

Como diagnosticar um 502 aqui de novo

curl -s -o /dev/null -w '%{http_code}\n' https://SEU-DOMINIO/naoexiste
  • Resposta 404 → o nginx está lendo o disco; o problema é outro
  • Resposta 502 → o nginx nem chega no disco: é porta errada ou container fora do ar
  • 502 que volta em menos de 1s → conexão recusada (porta errada)
  • 502 que demora mais de 10s → timeout (container travado ou bloqueio de rede)

Estrutura

Arquivo O que é
index.html Página do cadastro
privacidade.html Política de Privacidade (fonte da verdade do texto legal)
assets/app.js Busca de CEP, validação e envio ao Google Forms
assets/style.css Estilos das duas páginas
assets/fonts.css + assets/fonts/ Montserrat e Inter servidas localmente
assets/hero-*.webp / .jpg Arte da campanha em duas resoluções
surfistaPost material capitão c.png Arte original, 2160×2700 (não é usada em produção)

Ligação com o Google Forms

Formulário: 1xNloSQ_wQNi3ovtY1_chenGJTfamPvAEeyOlhMj4aWg

Os IDs dos campos ficam em assets/app.js, no objeto CAMPOS. Se você adicionar, apagar ou recriar uma pergunta no Google Forms, o ID daquele campo muda e o envio daquele dado para de funcionar em silêncio.

Para descobrir os IDs de novo:

  1. Abra o formulário público (/viewform)
  2. Veja o código-fonte da página
  3. Procure por FB_PUBLIC_LOAD_DATA_
  4. Em cada pergunta, o número dentro do array interno é o entry. daquele campo

Restrições que precisam continuar valendo no Google Forms:

  • Todas as perguntas devem ser do tipo Resposta curta
  • Todas devem ficar não obrigatórias — quem valida é este site. Se uma pergunta virar obrigatória e chegar vazia, o Google rejeita o envio e o site não tem como saber (a resposta vem opaca por causa do CORS).
  • O formulário não pode exigir login nem coletar e-mail

Pendências antes de ir ao ar

  • Preencher, em privacidade.html, os trechos marcados em amarelo ([PREENCHER: ...]): endereço do diretório e nome/e-mail do encarregado (DPO)
  • Apagar a linha de teste da planilha (Maria Aparecida Souza)
  • Revisão jurídica da política de privacidade — o texto foi redigido com base na LGPD, mas propaganda eleitoral tem regras próprias e o cadastro envolve dado sensível (opinião política, art. 5º, II da LGPD)
  • Confirmar que a hospedagem serve o site por HTTPS

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages