ADR-0009 — Princípios de Interface e Experiência do Usuário
Status
Aprovado
Contexto
O sistema EBDbe será utilizado predominantemente em dispositivos móveis (PWA instalado no celular), conforme ADR-0000 e ADR-0001. O público é diverso em idade e familiaridade com tecnologia: professores, secretários, superintendentes e alunos.
A interface deve ser:
- Agradável e suave ao uso
- Prática e objetiva
- Simples de aprender
- Adequada ao contexto de igreja e Escola Bíblica Dominical
É necessário estabelecer princípios claros de UI/UX antes do início do desenvolvimento.
Referência de inspiração: O estilo de experiência do Airbnb (airbnb.com.br) será utilizado como referência para equilíbrio entre clareza, leveza e usabilidade prática.
Decisão
O sistema adotará os seguintes princípios de interface e experiência do usuário:
1. Princípios Gerais
| Princípio | Descrição |
|---|---|
| Mobile-first | Layout pensado primeiro para tela pequena; adapta-se fluidamente a telas maiores |
| Suavidade | Animações breves (200–400ms), transições discretas, feedback visual imediato |
| Praticidade | Mínimo de toques para ações comuns, hierarquia visual clara |
| Touch-friendly | Áreas de toque mínimas de 44px, espaçamento adequado entre elementos clicáveis |
| Clareza | Tipografia legível, contraste adequado, ícones reconhecíveis |
| Consistência | Padrões visuais e de interação uniformes em todo o app |
| Leveza | Estética limpa, sem poluição visual |
| Espaço em branco | Respiro visual; evitar densidade excessiva de informação |
| Tom acolhedor | Interface amigável e convidativa, adequada ao contexto comunitário |
2. Diretrizes Mobile (inspiradas no Airbnb)
- Navegação por bottom bar ou drawer nas telas principais
- Conteúdo em cards com bordas arredondadas; layout escaneável, um conceito principal por card
- Conteúdo prioritário acima da dobra; scroll natural e fluido
- Ações principais destacadas (botão preenchido); ações secundárias com botão outline/ghost
- Feedback tátil (HapticFeedback) em ações de confirmação
- Skeleton loaders em carregamento de listas/cards (evitar spinners genéricos)
- Bottom sheet para filtros e opções em vez de modal de tela cheia quando possível
3. Referência Visual (estilo inspirado no Airbnb)
- Material Design 3 como base do design system
- Layout inspirado no Airbnb: cards com bordas arredondadas, muito espaço em branco, hierarquia visual por imagem/conteúdo em destaque
- Bordas generosamente arredondadas (8–16px); botões com cantos pill quando apropriado
- Sombras sutis e discretas; profundidade sem peso visual
- Paleta suave com cor de acento cálida e convidativa
- Tipografia limpa, hierarquia clara entre títulos e corpo
4. Animações
- Duração: 200–400ms para transições de tela e microinterações
- Evitar animações longas (> 500ms)
- Usar curvas suaves (ease-in-out)
- Animações devem ter propósito, não decorativas
5. O Que Evitar
- Animações excessivas ou chamativas
- Muitos níveis de navegação aninhados
- Texto em tamanho menor que 14sp para conteúdo principal
- Elementos clicáveis pequenos ou muito próximos
- Cores que dificultem leitura ou acessibilidade
6. Acessibilidade
- Contraste mínimo conforme WCAG 2.1 nível AA
- Suporte a ampliação de texto do sistema
- Labels e descrições para leitores de tela
7. Estado Logado e Conta
- Após login, o header/topo deve exibir foto/avatar do usuário no lugar da ação "Entrar"
- A foto pode vir do provedor OAuth ou ser customizada no perfil do usuário
- Clique no avatar deve abrir popup/menu de conta com informações básicas e ação "Sair"
- Regras detalhadas de perfil e ciclo de vida: ADR-0013
8. Seleção e cópia de texto
- Em todas as páginas da solução, o texto exibido na interface deve permitir seleção, cópia e cola quando fizer sentido (conteúdo legível pelo usuário).
- Campos de entrada (inputs) já permitem edição e cola por padrão; não bloquear cola neles.
- Texto somente leitura (labels informativos, mensagens, conteúdo de cards, etc.) deve ser selecionável para que o usuário possa copiar (Ctrl+C / menu de contexto / gesto longo).
- Exceções (não devem ser selecionáveis):
- Textos puramente decorativos ou de um único caractere (ex.: iniciais em avatar).
- Textos que funcionam como label de controle acionável: qualquer componente que tenha comando ou ação associada ao gesto do usuário (clique, duplo clique, toque longo, etc.) não deve ter o texto selecionável, para não interferir na usabilidade do toque/clique. Inclui, entre outros: labels de botões (TextButton, FilledButton, OutlinedButton, IconButton), ChoiceChip, opções de lista ou menu clicável, itens de TabBar, links que navegam ou disparam ação, tiles clicáveis.
- Objetivo: acessibilidade, reutilização de informações (anotações, compartilhamento) e consistência de comportamento em todo o app.
Consequências
- O desenvolvimento da camada presentation seguirá estes princípios.
- Novos componentes e telas devem validar conformidade com o ADR.
- Alterações na diretriz de UI/UX exigirão revisão deste ADR.
- O tema Flutter será configurado conforme Material 3 e paleta definida.