legal / privacidade.mdEntrar

Documento público

Política de Privacidade e Termos de Uso

Este documento descreve, sem eufemismo, cada dado que o sistema de sorteio da palestra grava sobre você, por que ele é gravado, quem consegue vê-lo e como apagá-lo. A lista de campos abaixo espelha o schema real do banco de dados.

Última atualização: 4 de setembro de 2026

01Resumo em 30 segundos

O essencial

  • O login é via Google ou GitHub. Não existe senha neste sistema — nem para criar, nem para guardar.
  • Do provedor vêm quatro coisas: nome, e-mail, foto de perfil e um identificador. Nada além disso.
  • Entrar já inscreve você no sorteio automaticamente. Isso é o produto, não um efeito colateral.
  • O sistema também registra IP e navegador da sua sessão — o Better Auth faz isso para conseguir invalidar acessos.
  • Não há analytics, rastreador, anúncio ou venda de dados. Nenhum e-mail é disparado para você.
  • Você apaga tudo sozinho, a qualquer momento, em Configurações — sem pedir autorização a ninguém.

02Quem é responsável

Este site é um projeto acadêmico e demonstrativo, criado para a palestra sobre Spec-Driven Development com Inteligência Artificial realizada na Unitri (Uberlândia/MG), cuja finalidade é sortear 5 configurações completas de computador entre os presentes.

O controlador dos dados, na acepção da Lei Geral de Proteção de Dados (Lei nº 13.709/2018), é o autor e organizador do projeto, João Batista Cardoso Miranda. Os canais de contato estão na página de créditos.

A base legal para o tratamento é o consentimento (art. 7º, I), dado no momento em que você escolhe entrar com Google ou GitHub, somado ao legítimo interesse (art. 7º, IX) na parcela estritamente necessária para manter a sessão segura e a lisura do sorteio.

03O que é coletado, tabela por tabela

Abaixo está o inventário completo do banco de dados PostgreSQL, na mesma nomenclatura do schema versionado no repositório. Se um campo guarda algo sobre você, ele está nesta lista.

Leitura dos rótulos

Campos em laranja são os que merecem sua atenção: identificam você diretamente ou permitem acessar sua conta. As etiquetas dizem se o valor veio do provedor OAuth, se foi gerado pelo sistema ou se nasceu do seu uso.

Seu cadastro

User

Identificar você na plataforma, exibir seu nome e foto na lista de participantes e saber se você concorre ao sorteio.

  • idGerado pelo sistema

    Identificador interno (cuid) gerado no cadastro.

  • nameProvedor OAuth

    Seu nome público, exatamente como consta no Google ou no GitHub.

  • emailProvedor OAuth

    O e-mail da conta usada no login. É a chave única do cadastro.

  • emailVerifiedProvedor OAuth

    Se o provedor declarou o e-mail como verificado.

  • imageProvedor OAuth

    A URL da sua foto de perfil no provedor. A imagem em si não é copiada — é carregada direto do Google/GitHub.

  • roleGerado pelo sistema

    "user" para todo mundo; "admin" apenas para o organizador do evento.

  • isParticipantGerado pelo sistema

    Se você está elegível ao sorteio. Administradores não concorrem.

  • createdAt / updatedAtGerado pelo sistema

    Data do primeiro login e da última alteração do cadastro.

Retenção: Apagado imediatamente quando você exclui a conta em Configurações.

Vínculo com Google / GitHub

Account

Ligar seu cadastro à conta do provedor social, para que o próximo login reconheça você como a mesma pessoa.

  • accountId / providerId / issuerProvedor OAuth

    Seu identificador dentro do provedor e qual provedor foi usado (google ou github).

  • accessToken / refreshToken / idTokenProvedor OAuth

    Tokens devolvidos pelo provedor no fim do fluxo OAuth, gravados pelo Better Auth. Só são usados para validar a sessão — a aplicação não chama nenhuma API do Google ou do GitHub em seu nome.

  • scopeProvedor OAuth

    As permissões concedidas — apenas perfil básico e e-mail. Nada de contatos, repositórios, arquivos ou publicações.

  • passwordGerado pelo sistema

    Existe na tabela por exigência do Better Auth, mas fica sempre nulo: não há cadastro por senha neste sistema.

Retenção: Apagado em cascata junto com a conta.

Sessões ativas

Session

Manter você logado entre uma página e outra e permitir encerrar o acesso quando você sai.

  • tokenGerado pelo sistema

    O identificador assinado guardado no cookie de sessão do seu navegador.

  • ipAddressColetado no uso

    O endereço IP da requisição de login. No dia do evento, quase todo mundo aparece com o mesmo IP — o da rede da Unitri.

  • userAgentColetado no uso

    A string de navegador/sistema enviada pelo seu dispositivo.

  • expiresAt / createdAt / updatedAtGerado pelo sistema

    Quando a sessão nasceu e quando ela deixa de valer.

Retenção: Apagada em cascata com a conta; também expira sozinha na data de `expiresAt`.

Estado temporário do OAuth

Verification

Guardar por poucos minutos o estado do fluxo de login (proteção contra CSRF) enquanto você está na tela do Google ou do GitHub.

  • identifier / value / expiresAtGerado pelo sistema

    Valores efêmeros do handshake OAuth. Não descrevem você nem seu uso do site.

Retenção: Registros expiram e são descartados automaticamente; não formam histórico.

Sua inscrição no sorteio

RaffleEntry

Registrar que você está concorrendo. É criada automaticamente no seu primeiro login — é isso que significa "entrar já inscreve você".

  • userIdGerado pelo sistema

    Referência ao seu cadastro.

  • createdAtGerado pelo sistema

    O instante em que você entrou no sorteio.

Retenção: Apagada em cascata com a conta (e você deixa de concorrer).

Prêmios e ganhadores

RafflePrize

Guardar qual configuração de PC saiu para quem, e para quem ela foi transferida.

  • winnerIdColetado no uso

    Seu id, caso você seja sorteado. Fica público na tela de resultados.

  • transferredToIdColetado no uso

    O id de quem recebeu o prêmio, se houve transferência.

  • drawnAtGerado pelo sistema

    O instante do sorteio.

Retenção: A linha do prêmio permanece (ela é do evento, não sua), mas seu vínculo é anulado: ao excluir a conta, o prêmio volta ao estado de não sorteado.

Histórico de transferências

TransferLog

Deixar rastreável quem passou qual prêmio para quem — é a garantia de que uma transferência não pode ser contestada depois.

  • prizeId / fromUserId / toUserIdColetado no uso

    Qual prêmio mudou de mãos, de quem para quem.

  • createdAtGerado pelo sistema

    O instante da transferência.

Retenção: Apagado explicitamente antes da exclusão da sua conta.

Auditoria do console SQL (somente admin)

QueryLog

Registrar toda consulta executada no console administrativo. Existe para auditar o organizador, não os participantes.

  • userId / sql / duration / rowCount / errorColetado no uso

    Quem executou, o texto exato da consulta, quanto tempo levou, quantas linhas voltaram e o erro, se houve. Apenas contas com papel de administrador geram linhas aqui.

Retenção: Apagado explicitamente antes da exclusão da conta que executou as consultas.

Além do banco, duas estruturas vivem apenas na memória do servidor e não são persistidas: o contador de rate limit, com chave derivada do IP, que impede que a rede do evento derrube o login; e um cache de 2 segundos dos resultados do sorteio, que evita centenas de consultas simultâneas ao banco. As duas desaparecem quando o processo reinicia.

04O que não é feito

Tão importante quanto declarar o que existe é declarar o que não existe. Neste sistema:

  • Nenhuma ferramenta de analytics, pixel de rastreamento, mapa de calor ou gravação de sessão.
  • Nenhum cookie de publicidade ou de terceiros. O único cookie é o de sessão do Better Auth, sem o qual o login não funciona.
  • Nenhum dado é vendido, alugado ou cedido para fins comerciais ou de marketing.
  • Nenhum disparo de e-mail: não há newsletter, notificação por e-mail nem lista de contatos.
  • Nenhuma senha é criada, pedida ou armazenada — o acesso é exclusivamente via Google ou GitHub.
  • Nenhuma coleta de geolocalização, agenda, contatos, arquivos ou repositórios.

05Quem mais vê seus dados

Nenhum dado é compartilhado com parceiros comerciais. Os terceiros abaixo participam porque a aplicação tecnicamente não roda sem eles:

Google e GitHubAutenticação (OAuth)

Você se autentica no site deles, não no nosso. Eles nos devolvem nome, e-mail, foto e um identificador. Nós nunca vemos sua senha nem seu segundo fator.

VercelHospedagem da aplicação

Processa as requisições HTTP e mantém logs operacionais de infraestrutura (incluindo endereço IP), conforme a política de privacidade da própria Vercel.

NeonBanco de dados PostgreSQL

Armazena, em servidor gerenciado, exatamente as tabelas descritas acima.

06O que os outros participantes veem

O sorteio é público entre os presentes — é o que o torna auditável. Concretamente, quem está logado consegue ver:

  • Na tela Participantes: seu nome, sua foto e seu e-mail parcialmente mascarado (apenas os três primeiros caracteres e o domínio, ex.: joa****@gmail.com).
  • Na tela Transferir: seu nome e seu e-mail completo. Essa tela existe para que um ganhador consiga identificar sem ambiguidade a pessoa certa antes de repassar um prêmio — dois participantes homônimos são distinguidos pelo e-mail.
  • Na tela de resultados: se você for sorteado, seu nome e sua foto aparecem como ganhador, inclusive projetados no telão do evento.

Se isso for um problema para você

Não há como participar do sorteio de forma anônima: o nome precisa ser exibido para que a entrega do prêmio seja verificável na hora. Se preferir não expor esses dados, exclua a conta — a exclusão remove você da lista e do sorteio imediatamente.

07Cookies

Existe um único cookie, emitido pelo Better Auth: better-auth.session_token (em produção, servido como __Secure-better-auth.session_token). Ele guarda o identificador assinado da sua sessão e é estritamente necessário: sem ele, cada clique exigiria um login novo.

Não há cookies de análise, de publicidade ou de terceiros — motivo pelo qual este site não exibe banner de consentimento de cookies. Ao sair, o cookie é invalidado no servidor e removido do navegador.

08Seus direitos e como exercê-los

A LGPD garante a você acesso, correção, portabilidade, revogação do consentimento e eliminação dos dados. Neste sistema, o mais importante deles é automático:

Exclusão imediata, sem intermediário

Em Configurações → Zona de exclusão, o botão de excluir conta executa, em uma única transação no banco:

  • Prêmios que você ganhou voltam ao estado de não sorteados e retornam ao evento.
  • Prêmios recebidos por transferência são desvinculados de você.
  • Seus registros de transferência e de auditoria de consultas são apagados.
  • Seu cadastro é apagado, levando junto sessões, vínculos OAuth e sua inscrição no sorteio.

Não há soft delete, cópia sombra ou período de carência: a linha deixa de existir. Como consequência, uma conta excluída deixa de concorrer — se a exclusão for feita antes do sorteio, você fica de fora dele.

Para correção de nome, e-mail ou foto, altere o dado no Google ou no GitHub: como esses campos vêm de lá, o valor é atualizado na origem. Para acesso a uma cópia dos seus dados ou qualquer outra solicitação, use os canais na página de créditos.

Revogar o consentimento também é possível pelo lado do provedor, removendo a autorização do aplicativo nas configurações de segurança da sua conta Google ou GitHub.

09Segurança

As medidas técnicas em vigor: tráfego exclusivamente por HTTPS; cookie de sessão assinado e marcado como Secure em produção; segredos e credenciais fora do repositório, validados na inicialização; rotas administrativas verificadas no servidor a cada requisição, e não apenas escondidas na interface; e limite de requisições por origem contra tentativas de abuso.

Ainda assim, seja realista sobre o que isto é: um projeto acadêmico construído para uma palestra, mantido por uma pessoa. Nenhum sistema é inviolável, e você não deve tratar esta plataforma como cofre de dado sensível. O que ela guarda sobre você é o que está descrito na seção 03 — nada além disso.

Termos de Uso

As regras a seguir valem para todo mundo que entra na plataforma e são as mesmas que o código aplica — elas não dependem da boa vontade de quem opera o sistema.

10Regras do sorteio

  • Elegibilidade. Qualquer pessoa que faça login com Google ou GitHub é inscrita automaticamente e concorre. Uma conta por pessoa: o e-mail é chave única.
  • O organizador não concorre. A conta de administrador é marcada como não participante e nunca recebe inscrição no sorteio.
  • Quórum mínimo. O sorteio só pode ser executado com pelo menos 5 participantes elegíveis inscritos.
  • Aleatoriedade. A seleção usa o algoritmo Fisher-Yates shuffle, que dá a cada inscrito exatamente a mesma probabilidade de ser sorteado. Não há peso, prioridade ou ordem de chegada.
  • Uma única vez. O sorteio de um evento é executado dentro de uma transação atômica que marca o evento como sorteado. Uma segunda tentativa é recusada pelo banco — não existe “sortear de novo” nem desfazer.
  • Só o administrador dispara. A execução exige papel de administrador, verificado no servidor.
  • Prêmios. São 5 configurações completas de computador, numeradas, cada uma com um ganhador. A entrega física, prazos e condições são combinados presencialmente no evento e não fazem parte desta plataforma.

11Transferência de prêmios

Ganhou e quer passar adiante? Pode — dentro destas regras, todas aplicadas pelo servidor:

  • Apenas o ganhador original transfere o próprio prêmio. Ninguém transfere prêmio alheio.
  • A transferência é única e definitiva: um prêmio já transferido não pode ser transferido outra vez, nem revertido pela plataforma.
  • O destinatário precisa ser um participante ativo, não administrador e diferente de você — autotransferência é recusada.
  • Toda transferência gera um registro permanente (quem passou, para quem, quando), para que a titularidade do prêmio seja incontestável no momento da entrega.

12Conduta e suspensão

Ao usar a plataforma, você concorda em não:

  • Criar mais de uma conta para aumentar suas chances no sorteio.
  • Automatizar requisições, testar limites de carga ou tentar contornar o controle de acesso.
  • Tentar acessar rotas administrativas, dados de outros participantes ou o console SQL sem a devida permissão.
  • Fazer engenharia reversa da plataforma com o objetivo de influenciar o resultado do sorteio.

O console SQL é exclusivo do administrador, restrito a consultas de leitura (SELECT e WITH), com comandos destrutivos bloqueados, e toda consulta executada fica registrada e auditável.

Consequência

Contas que violarem estas regras podem ser desclassificadas do sorteio e removidas, a critério do organizador, inclusive durante o evento.

A plataforma é fornecida “como está”, sem garantia de disponibilidade ininterrupta. Trata-se de um sistema construído para um evento único, e pode sair do ar depois dele. Alterações nestes termos serão publicadas nesta mesma página, com a data de atualização revisada no topo.

13Contato

Dúvidas sobre este documento, pedidos relacionados aos seus dados ou qualquer questão sobre o sorteio: fale diretamente com o autor pelos canais listados na página de créditos. Como o projeto é mantido por uma pessoa só, a resposta vem dela — não de um formulário.