# TODO - Tikah vs. referencia de concorrente

> Atualizado em: 2026-05-10
> Base: `descricao.md`, `README.md`, `GUIA.md`, `CLAUDE.md`, `.ai/*.md/.mem`, `.claude/*.md/.mem`, `SECURITY.md`, `todo/todo.md` e lista de funcionalidades do concorrente.  
> Objetivo: organizar pendencias para implementacao por etapas. Nao implementar nada sem revisao.

## Atualizacao 2026-05-09 - Landing institucional

- [x] Reposicionar a Tikah como plataforma para eventos, congressos e encontros profissionais, sem limitar a copy a eventos cientificos.
- [x] Padronizar cabecalho desktop/mobile com as mesmas opcoes principais e seletor PT/EN/ES.
- [x] Remover `Entrar` e `Solicitar implantacao` do cabecalho desktop; destacar `Ver demonstracao` como CTA principal.
- [x] Manter no mobile um botao chamativo `Ver demonstracao` e menu hamburguer para `Funcionalidades`, `Como funciona`, `Preco` e `Ver demonstracao`.
- [x] Linkar a palavra demonstracao do texto hero para `/demo`.
- [x] Usar grid de 8 funcionalidades no desktop e carrossel exclusivo no mobile.
- [x] Corrigir o carrossel mobile para swipe natural usando CSS `scroll-snap`, `snap-always` para controlar inércia, e rastreamento de dots via `IntersectionObserver` (100% livre de bugs de scroll do React).
- [x] Documentar a relacao visual Tikah/Huryz: Huryz azul/laranja, Tikah mantendo grafite/ciano com ambar como ponte.
- [x] Incluir a secao `#nome` na landing institucional, como primeira opcao do menu, explicando a origem Maori de Tikáh e o trocadilho leve de "tickar" tarefas.
- [x] Garantir que os refinamentos do site modelo tambem estejam disponiveis no site real do cliente via `/organizador/landing-page`/`landingConfig`, com componentes respeitando a paleta escolhida pelo organizador.
- [x] Trocar patrocinadores/parceiros do site modelo e do site real por carrossel configuravel com logos uniformes, dots, setas e heranca da paleta.
- [x] Manter o site modelo com datas sempre coerentes por deslocamento automatico em blocos de 30 dias e atualizar o ano exibido junto.

## Atualizacao 2026-05-10 - Seguranca para publicar landing

- [x] Adicionar contrato/teste para revogar sessoes em troca/reset de senha via `sessionVersion`.
- [x] Adicionar workflow DAST com banco efemero e OWASP ZAP baseline.
- [x] Documentar WAF/CDN, rate limit de borda, bots e geo challenge em runbook.
- [x] Documentar rotacao de segredos comprometidos.
- [x] Documentar hardening de servidor: usuario nao-root, SSH por chave, root login e updates automaticos.
- [x] Documentar plano de pentest leve antes de divulgacao ampla.
- [x] Remover `unsafe-inline` da CSP de producao e aplicar nonce por request para scripts/estilos.
- [x] Implementar recovery codes e reset assistido de 2FA por Super Admin.
- [x] Criar readiness check de producao por CLI, API e painel no Tikah Admin.
- [x] Adicionar alertas de seguranca por e-mail quando `SECURITY_ALERT_EMAIL` estiver configurado.
- [ ] Executar de fato WAF/CDN no provedor/DNS.
- [ ] Aplicar hardening SSH/SO no servidor de producao.

## Legenda

- `[ ]` Pendente.
- `[~]` Parcial: existe algo no produto, mas falta completar para ficar competitivo.
- `[?]` Validar no codigo/fluxo antes de implementar: os documentos sugerem existencia, mas nao confirmam cobertura completa.

---

## Etapa 1 - Multi-evento, idiomas e gestao do site

### Multi-evento

- [x] Permitir que um mesmo organizador/tenant gerencie multiplos eventos/edicoes, nao apenas um evento rascunho/publicado por tenant.
- [x] Criar seletor de evento ativo no dashboard do organizador/admin quando houver mais de uma edicao.
- [x] Criar fluxo de duplicacao de evento/edicao para reaproveitar landing, categorias, lotes, emails, programacao base e normas.
- [x] Exibir historico de edicoes anteriores no painel do organizador, com status e atalhos.
- [x] Revisar todos os helpers e APIs para escopo por `eventId` selecionado, evitando dependencia de "evento mais recente" em fluxos operacionais.

### Idiomas

- [x] Adicionar configuracao de idioma do evento: PT, EN e ES.
- [x] Permitir conteudo publico traduzido por idioma na landing: apresentacao, normas, inscricoes, submissao, hospedagem, patrocinadores, datas e programacao.
- [x] Criar alternador publico de idioma no site do evento.
- [x] Adicionar seletor PT/EN/ES na landing institucional publica da Tikah (`/`) e traduzir seus textos de venda.
- [x] Preparar templates de e-mail por idioma.

### Gestao do site

- [x] Agendar entrada e saida de banners no site publico.
- [x] Criar modulo de noticias em tempo real para o site do evento.
- [x] Garantir que apresentacao do evento, diretoria e comissoes tenham blocos estruturados/editaveis na landing.
- [x] Garantir que normas cientificas e normas de inscricao sejam blocos estruturados/editaveis, com arquivos anexos quando necessario.
- [x] Criar status de revisao/publicacao por bloco da landing, para permitir preparar alteracoes antes de publicar.

---

## Etapa 2 - Inscricoes, pagamentos e financeiro

### Inscricoes

- [x] Validar se categorias e lotes ja cobrem completamente valores por categoria e mudanca automatica por data/vaga.
- [x] Bloquear pagamento para categorias especificas.
- [x] Liberar pagamento bloqueado mediante aprovacao de comprovante/documento.
- [x] Gerenciar comprovantes de modalidades/categorias: upload, analise, aprovacao, rejeicao e historico.
- [x] Notificar participante sobre choque de horario nas escolhas de inscricao, cursos e atividades sociais.
- [x] Controlar vagas por tipo de inscricao e por atividades opcionais.
- [x] Criar cupons para inscricoes patrocinadas, com regras de uso, validade, categoria, lote e limite.
- [x] Validar automaticamente inscricoes de socios quites, com integracao/importacao manual de base de socios.
- [x] Exigir aceite de termos e condicoes de inscricao, registrando versao, data/hora e IP.
- [x] Controlar participantes que desejam pontuar no CNA, com campo no cadastro/inscricao e relatorio.
- [x] Validar configuracao das mensagens de inscricao recebidas pelos participantes.
- [x] Gerar relatorios financeiros e quantitativos em tempo real com filtros mais completos.
- [x] Gerar relatorios personalizados em Excel, nao apenas CSV.

### Cursos e atividades sociais

- [x] Criar cadastro de cursos, workshops e atividades sociais vendidas junto com a inscricao.
- [x] Permitir preco, lote, capacidade, sala, horario e regras de elegibilidade por atividade.
- [x] Controlar choque de horario entre atividades selecionadas.
- [x] Permitir inscricao de acompanhante, com dados, atividades e pagamentos vinculados.

### Pagamentos

- [x] Definir gateway principal como Asaas, com modo sandbox/producao via `ASAAS_ENV`.
- [x] Implementar pagamento real por PIX via Asaas, com QR Code dinamico e copia e cola dentro da Tikah.
- [x] Implementar boleto bancario via Asaas, com linha digitavel e URL do boleto vinculadas a inscricao.
- [x] Implementar cartao de credito nacional e internacional via Asaas, processado diretamente no formulario da Tikah sem redirecionar para checkout externo.
- [x] Confirmar bandeiras suportadas: Visa, Mastercard, Diners, Discover, ELO, American Express, Aura e equivalentes atuais.
- [x] Criar webhook de pagamento para conciliacao automatica.
- [x] Criar pagina de retorno pos-pagamento com status aprovado, pendente ou recusado.
- [x] Reenviar link de pagamento por e-mail.
- [x] Implementar estorno parcial e total no painel.
- [x] Modelar repasse da comissao Tikah de 8% e demonstrativo para organizador.

---

## Etapa 3 - Trabalhos cientificos e avaliacao

### Submissao

- [x] Permitir varios tipos de trabalho alem do resumo padrao: resumo simples, resumo expandido, poster, oral, trabalho completo etc.
- [x] Validar controle de datas limite para envio, edicao e exclusao/retirada de trabalhos.
- [x] Configurar limites por caracteres ou palavras, autores e instituicoes por tipo de trabalho.
- [x] Trabalhar com envio em etapas: resumo e trabalho completo.
- [x] Permitir anexo do trabalho completo, com versoes e prazo por etapa.
- [x] Atualizar dados de apresentacao dos trabalhos aprovados: tipo, sala, data, horario, ordem/poster.

### Avaliacao

- [x] Validar se mensagens de trabalho recebido, aprovado e recusado ja sao totalmente configuraveis por template.
- [x] Acompanhar submissao por relatorios simples e rapidos, com filtros por area, status, avaliador, nota e pendencias.
- [x] Gerenciar avaliadores e andamento das avaliacoes.
- [x] Distribuir trabalhos por area tematica ou avaliador; completar distribuicao automatica.
- [x] Criar criterios de avaliacao configuraveis por evento/tipo de trabalho, com pesos individuais.
- [x] Suportar avaliacao por media ponderada e por conceito.
- [x] Configurar minimo/maximo de avaliadores por trabalho.
- [x] Detectar conflito de interesse por instituicao, autoria, coautoria ou declaracao manual.
- [x] Criar terceiro avaliador/desempate quando houver divergencia grande.
- [x] Relatorio de acordancia entre avaliadores.
- [x] Validar visualizacao dos comentarios dos avaliadores para organizador e autor quando permitido.

### Anais e publicacao

- [x] Liberar no site publico todos os trabalhos aprovados, com busca por autor e titulo.
- [x] Criar pagina publica de anais por evento, agrupada por area e tipo.
- [x] Gerar relatorios completos de trabalhos em Word e Excel.
- [x] Gerar PDF individual de cada resumo/trabalho aprovado.
- [x] Validar anais consolidados em PDF ja existentes e completar sumario, ISBN/ISSN e filtros.

---

## Etapa 4 - Programacao, palestrantes e convidados

### Programacao

- [x] Exibir programacao publica em grade visual por data, hora e sala.
- [x] Validar cadastro de atividades por data, hora e sala no painel atual.
- [x] Gerenciar choque de horario de convidados/palestrantes.
- [x] Permitir que convidado confirme atividades pelo site do evento.
- [x] Gerar programacao interativa e lista de palestrantes automaticamente.
- [x] Permitir ao convidado acesso a agenda de atividades confirmadas.
- [x] Gerar relatorios personalizados em Word, Excel e PDF.
- [x] Enviar agenda do palestrante por e-mail.
- [x] Permitir navegacao por filtros na programacao publica e do participante.
- [x] Exportar programacao como iCal ou PDF.
- [x] Campo de streaming por sessao, quando houver transmissao online.

### Area do palestrante

- [x] Criar area exclusiva do palestrante/convidado.
- [x] Permitir atualizacao de cadastro, foto e mini-curriculo.
- [x] Coletar dados de voo e hospedagem.
- [x] Exibir agenda confirmada do palestrante.
- [x] Permitir informar conflito de interesse.
- [x] Gerar relatorios de convites e conflito de interesse.

---

## Etapa 5 - Comunicacao e cartas

- [x] Validar modulo atual de templates de e-mail e `EmailLog`.
- [x] Gerenciar conteudo de todas as mensagens do sistema por evento e idioma.
- [x] Criar cartas personalizadas para segmentos de participantes.
- [x] Criar modelos iniciais: lembrete de pagamento em aberto, convite para palestrar, parabens por trabalho aprovado e certificados liberados.
- [x] Criar editor/preview de mensagem antes do envio.
- [x] Enviar comunicados segmentados: todos, inscritos pagos, pendentes, autores, aprovados, avaliadores, palestrantes, presentes.
- [x] Acessar relatorio das cartas/e-mails enviados, com status de entrega quando o provedor permitir.
- [x] Enviar copia das cartas do sistema para organizador/secretaria configurados.
- [x] Automatizar mensagens: boas-vindas, inscricao, pagamento, submissao, resultado, lembretes de prazo e certificados.

---

## Etapa 6 - Credenciamento, secretaria e controle presencial

### Cracha e secretaria

- [~] Enviar cracha virtual antes do primeiro dia do evento.
- [x] Permitir acesso ao cracha virtual no smartphone.
- [x] Validar emissao atual de etiquetas/crachas e completar PDF individual de cracha com QR code.
- [~] Ter secretarias descentralizadas com perfil operacional e caixa/turno.
- [x] Receber novas inscricoes para congresso, cursos e atividades sociais pela secretaria.
- [x] Receber inscricao de acompanhante pela secretaria.
- [x] Controlar vagas em tempo real durante inscricoes presenciais.
- [x] Emitir recibos na hora para pagamentos/inscricoes de secretaria.
- [x] Mostrar alerta de pendencia diretamente na tela do operador.
- [x] Validar socios quites automaticamente no credenciamento.
- [x] Gerar etiquetas nos caixas e no autoatendimento.
- [ ] Permitir novas inscricoes diretamente no autoatendimento.

### Caixa, presenca e acesso

- [x] Criar controle financeiro por caixa e turno, com abertura, fechamento individual e divergencias.
- [x] Registrar retirada de material com leitor de QR/barcode.
- [x] Registrar acesso ao evento com local, data e hora.
- [x] Registrar acesso a salas/sessoes com local, data e hora.
- [x] Controlar acesso por lista de presenca, categoria ou limite de pessoas.
- [x] Gerar relatorios de controle na secretaria e em visual mobile.
- [x] Criar dashboard de presenca em tempo real com polling.
- [x] Criar modo tablet/PWA para recepcao.
- [x] Criar modo offline para check-in, com sincronizacao posterior.

---

## Etapa 7 - Pesquisa de satisfacao

- [x] Criar pesquisa personalizada por evento.
- [x] Permitir perguntas de nota, multipla escolha, texto aberto e NPS.
- [x] Tornar preenchimento obrigatorio ou opcional.
- [x] Vincular emissao de certificado ao preenchimento quando configurado.
- [x] Mostrar quantidade e percentual de participantes que preencheram.
- [x] Criar relatorios condensados das respostas.
- [x] Exportar respostas em Excel/CSV.
- [x] Enviar link da pesquisa automaticamente no ultimo dia ou pos-evento.

---

## Etapa 8 - Certificados

- [x] Validar emissao atual de certificado simples de participacao para presentes.
- [x] Validar disponibilidade online dos certificados para participantes.
- [x] Gerenciar certificados personalizados para comissao, premios, palestrantes, avaliadores, apresentacao e outros.
- [x] Garantir emissao apenas para participantes com presenca confirmada quando configurado.
- [x] Validar download em PDF pelo participante.
- [x] Permitir condicionar certificado a pesquisa de satisfacao, pagamento quitado, presenca minima ou retirada de pendencias.
- [x] Criar editor visual/configurador de layout do certificado por evento.
- [x] Adicionar modelos selecionaveis de certificado (`CLASSICO`, `MODERNO`, `ACADEMICO`) com fonte, cores, heranca da marca do evento e previa visual.
- [x] Criar liberacao agendada de certificados.

---

## Etapa 9 - Relatorios, exportacoes e inteligencia operacional

- [x] Relatorio institucional consolidado em PDF com financeiro, inscricoes, submissao, avaliacao, aprovados e check-in.
- [x] Relatorio de avaliadores: quantidade avaliada, desempenho, prazo e pendencias.
- [x] Relatorios financeiros com receita bruta, liquida, taxa Tikah, gateway, estornos e repasses.
- [x] Exportacoes em Excel alem de CSV.
- [x] Relatorio de socios/CNA.
- [x] Relatorio de cupons e inscricoes patrocinadas.
- [x] Relatorio de controle de salas/sessoes.
- [x] Relatorio de caixa/turno.
- [x] Relatorio de pendencias por participante.

---

## Etapa 10 - LGPD, seguranca e producao

### Modelo publico inicial

- [x] Transformar landing institucional da Tikah em vitrine comercial, sem CTA de criacao automatica de evento.
- [x] Adicionar contato comercial por e-mail copiavel e WhatsApp flutuante.
- [x] Redirecionar `/registro` para contato e bloquear API de criacao automatica de organizador por padrao.

### LGPD e consentimento

- [x] Politica de privacidade dinamica/editavel por evento/plataforma.
- [x] Termos de inscricao com versao, aceite, timestamp e IP.
- [x] Endpoint/fluxo de exclusao ou anonimizacao de conta.
- [x] Anonimizacao de usuarios inativos apos periodo configuravel.
- [x] Registro de consentimentos para comunicacao, imagem e termos cientificos quando aplicavel.

### Autenticacao e auditoria

- [x] Implementar 2FA completo para administradores.
- [ ] Criar fluxo seguro de recuperacao de senha.
- [ ] Criar alerta para muitas falhas de login.
- [ ] Criar alerta para criacao/alteracao de usuario admin.
- [ ] Criar modelo de audit log no Prisma.
- [ ] Registrar acoes administrativas sensiveis: configuracoes, usuarios, roles, uploads, importacoes, pagamentos, conteudo publicado e alteracoes criticas.
- [ ] Registrar usuario, data/hora, IP, user-agent, acao executada e payload resumido sem secrets.

### Infraestrutura e operacao

- [ ] Definir banco de producao.
- [ ] Migrar de SQLite local para PostgreSQL ou banco gerenciado equivalente.
- [ ] Criar rotina automatica de backup do banco.
- [ ] Testar restore em ambiente separado.
- [ ] Fazer backup automatico de uploads importantes.
- [x] Criar script e roteiro de backup para banco SQLite, `.env` e uploads em `scripts/backup-tikah.sh` e `DEPLOY_TIKAH.md`.
- [ ] Migrar uploads de producao para storage externo: S3, Cloudflare R2, Supabase Storage ou equivalente.
- [ ] Ativar Cloudflare/WAF ou protecao equivalente para rotas criticas.
- [ ] Configurar rate limit na borda/CDN para login, recuperacao de senha, contato, upload, importacoes e APIs publicas sensiveis.
- [ ] Ativar protecao real contra bots.
- [ ] Avaliar bloqueio ou desafio por pais fora do publico esperado.
- [ ] Configurar CORS restrito conforme dominios finais.
- [x] Definir dominio oficial `tikah.com.br` e alinhar rotas publicas de eventos como `tikah.com.br/[slug]`.
- [x] Evitar dependencia de pasta fisica para URL do evento: slug e rota dinamica e renome recebe redirecionamento 308 para links antigos.
- [ ] Monitorar processo da aplicacao, CPU, RAM, disco, banco e rede.
- [ ] Configurar healthcheck externo com alerta.
- [x] Criar endpoint local de healthcheck em `/api/health`.
- [ ] Centralizar logs em servico externo.
- [ ] Configurar alertas para mudanca sensivel, upload, erro 500 recorrente e pico anormal de requisicoes.
- [ ] Planejar pentest leve antes de divulgacao ampla.

### Uploads e servidor web

- [x] Centralizar validacao de upload por MIME, extensao e assinatura real em `lib/upload-security.ts`.
- [ ] Confirmar no servidor que `.htaccess`, Nginx config ou equivalente esta sendo respeitado.
- [ ] Confirmar que diretorios de upload nao executam PHP, CGI, shell, Python etc.
- [ ] Confirmar que diretorios de upload nao listam arquivos.
- [ ] Adicionar testes automatizados para upload de SVG/PHP/HTML.
- [ ] Adicionar testes automatizados para arquivo grande demais.
- [ ] Adicionar testes automatizados para limpeza de temporario apos erro.

### CI/CD e dependencias

- [x] Documentar variaveis de ambiente de producao em `.env.example`.
- [x] Configurar deploy automatico via GitHub Actions self-hosted runner para AlmaLinux.
- [x] Incluir `npm audit --audit-level=high --omit=dev` no CI/CD e bloquear vulnerabilidade alta/critica.
- [ ] Acompanhar vulnerabilidades moderadas sem correcao direta.
- [ ] Validar build e fluxo principal apos updates.

---

## Itens que parecem ja cobertos, mas devem ser revisados antes de vender

- [x] Plataforma SaaS multi-tenant com tenant, slug e super admin.
- [x] Criacao de conta de organizador com evento rascunho.
- [x] Site publico do evento por slug.
- [x] Landing editavel com secoes principais e extras.
- [x] Categorias e lotes de inscricao com precos por categoria.
- [x] Submissao de resumos com janela de submissao.
- [x] Cadastro/gestao de avaliadores e atribuicao manual/em lote.
- [x] Programacao, palestrantes e agenda pessoal com favoritos.
- [x] Credenciamento por QR code e perfil de secretaria.
- [x] Etiquetas/crachas em formato de impressao.
- [x] Recibo de inscricao em PDF.
- [x] Certificados em PDF com envio pos-evento.
- [x] Anais consolidados em PDF.
- [x] Comunicacao por SMTP/templates e logs basicos.
- [x] Relatorios e exportacoes CSV.
