Descrição do Projeto:
Escopo & Arquitetura – Aplicativo Mobile (Plataforma de Eventos)
Versão: 1.0 | Data: 27/10/2025
1. Objetivo do Documento
Definir o escopo funcional e técnico completo do aplicativo mobile (Android/iOS), alinhado ao backend e painel web já existentes. O objetivo é garantir que o desenvolvedor tenha clareza total do que deve ser entregue, como integrar e como será validado.
2. Perfis e Permissões (RBAC)
• Participante: acesso a ingresso, QR Code, programação e informações do evento.
• Expositor: captação de leads, visualização de programação, mural (postagem), relatórios básicos.
• Produtor/Organizador: relatórios, controle de acesso, notificações push, mural (postagem/moderação).
• Administrador (apenas painel web): gestão de permissões, configuração global, moderação avançada.
3. Escopo Funcional por Módulo
3.1 Autenticação e Sessão
• Login com e-mail/senha via API (JWT).
• Detecção e armazenamento do perfil (participante, expositor, produtor).
• Refresh token e expiração; logout; recuperação de senha (link por e-mail).
3.2 Ingressos / Minha Credencial (Participante)
• Listar meus ingressos por evento; exibir status (pago, pendente, cancelado).
• Exibir QR Code de acesso (com possibilidade de funcionamento offline).
• Exibir dados do evento (nome, data, local, instruções).
3.3 Programação do Evento
• Listar agenda por dia/trilha; detalhes de cada atividade (título, horário, palestrante, local).
• Filtros por categoria/trilha; favorito (opcional, salvo localmente).
3.4 Informações do Evento
• Localização (endereço/Mapa), contatos importantes, patrocinadores e regulamentos.
• FAQs e termos/políticas (LGPD).
3.5 Captação de Leads (Expositor)
• Scanner de QR Code para ler a credencial do visitante.
• Captura de dados básicos (nome, empresa, e-mail, telefone) vindos do backend.
• Adição de observações/tags pelo expositor.
• Armazenamento local (SQLite) quando offline e sincronização posterior.
• Listagem de leads capturados e exportação (CSV via backend).
3.6 Controle de Acesso (Produtor)
• Scanner para validar acesso a zonas/áreas (VIP, backstage, auditórios, etc.).
• Restrições por tipo de ingresso e/ou janela de horário.
• Registro de entrada/saída e logs de tentativa indevida.
• Modo offline com fila de validações e sincronização.
3.7 Relatórios Mobile (Produtor e Expositor)
• Indicadores essenciais: ingressos vendidos, check-ins realizados, leads capturados.
• Gráficos/tabelas simples; atualização manual (pull-to-refresh).
3.8 Notificações Push
• Recebimento de push para participantes e expositores.
• Envio segmentado pelo produtor (via painel web) por perfil/atividade/evento.
• Integração com Firebase Cloud Messaging (FCM).
3.9 Mural de Status (Feed Simples)
• Postagem por Produtor e Expositor: texto (até 200 caracteres), imagem, vídeo curto (? 30s).
• Visualização por todos os perfis do evento, em ordem cronológica.
• Curtir (like) simples; comentários opcionais (fase 2).
• Moderação (ocultar/excluir) pelo Produtor/Admin no painel web.
3.10 Sorteios e Interações
• Execução de sorteios com base em participantes credenciados (via painel).
• Visualização/espelhamento no app (lista de ganhadores; transmissão ao vivo opcional).
3.11 Modo Offline & Sincronização
• Banco local (SQLite) para: leads capturados, validações de acesso e cache do QR do ingresso.
• Estratégia de retry exponencial e resolução de conflitos last-write-wins.
• Indicadores de status de sincronização (ícone/label).
3.12 Configurações e Conta
• Edição de dados básicos (nome, foto – opcional) conforme permissões.
• Troca de senha; logout; gerenciamento de notificações.
4. Requisitos Não Funcionais
• Performance: leitura de QR Code < 300ms em dispositivos médios; listagens < 2s.
• Offline-first nos módulos críticos (leads/acesso/ingresso).
• Segurança: JWT com refresh; TLS; armazenamento seguro (sem dados sensíveis em texto puro).
• LGPD: consentimento para uso de dados; opt-out de comunicações; política de retenção.
• Observabilidade: logs estruturados de erro e eventos (no app e no backend).
5. Integração com Backend (API REST)
Padrões:
• Autorização: Authorization: Bearer <token>.
• Content-Type: application/json.
• Paginação: ?page=1&pageSize=50.
• Erros: RFC7807 (problem+json) recomendado.
Endpoints mínimos:
• POST /auth/login ? { email, password } ? { accessToken, refreshToken, role }
• POST /auth/refresh ? { refreshToken } ? { accessToken }
• GET /events ? lista de eventos ativos
• GET /events/{id} ? detalhes do evento (infos básicas e programação)
• GET /events/{id}/program ? agenda (dias, trilhas, sessões)
• GET /me/tickets ? meus ingressos
• GET /me/tickets/{id}/qrcode ? payload para renderizar QR
• POST /leads ? criar lead { eventId, visitorId, notes, tags[] }
• GET /leads?eventId= ? meus leads
• POST /access/validate ? { eventId, visitorId, zoneId } ? { allowed, reason }
• GET /reports/summary?eventId= ? { sold, checkins, leads }
• GET /feed?eventId= ? posts
• POST /feed ? { eventId, type, text?, mediaUrl? } (somente expositor/pro