Skip to main content

Requisitos Não Funcionais

Performance​

IDDescrição
RNF-F01A aplicação deve carregar a tela inicial em menos de 3 segundos em conexões padrão.
RNF-F02Transições entre seções da SPA devem ser executadas em menos de 300ms.
RNF-F03Imagens e SVGs devem ser otimizados antes do build.
RNF-F04O bundle gerado pelo Vite deve ser minificado e dividido por rota.

Usabilidade​

IDDescrição
RNF-F05A interface deve ser responsiva para telas a partir de 320px de largura.
RNF-F06Todos os campos de formulário devem ter label visível e placeholder descritivo.
RNF-F07Ações destrutivas devem exigir confirmação explícita do usuário antes de serem executadas.
RNF-F08O usuário deve receber feedback visual para todas as ações — loading, sucesso e erro.

Acessibilidade​

IDDescrição
RNF-F09Imagens devem ter atributo alt descritivo.
RNF-F10O contraste entre texto e fundo deve seguir o mínimo recomendado pelo WCAG 2.1 nível AA.

Segurança​

IDDescrição
RNF-F11O token JWT deve ser armazenado no localStorage com validação de expiração.
RNF-F12Nenhuma informação sensível deve ser exibida em mensagens de erro visíveis ao usuário.
RNF-F13Rotas protegidas devem redirecionar para o login caso o token esteja ausente ou expirado.

Manutenibilidade​

IDDescrição
RNF-F14Componentes reutilizáveis devem ser isolados na pasta components/ com responsabilidade única.
RNF-F15Chamadas à API devem estar centralizadas na pasta services/ — nunca dentro de componentes ou páginas.
RNF-F16Variáveis de cor e tipografia devem ser definidas exclusivamente no variables.css via custom properties.

Backend

Segurança​

IDDescrição
RNF-B01Senhas devem ser armazenadas exclusivamente como hash bcrypt, com no mínimo 12 salt rounds.
RNF-B02O hash de senha não deve ser serializável — nenhuma resposta da API pode expô-lo, ainda que por descuido.
RNF-B03O identificador do usuário deve ser obtido do token de autenticação, nunca do corpo ou dos parâmetros da requisição.
RNF-B04Mensagens de erro de autenticação não devem revelar se um e-mail está cadastrado.
RNF-B05Credenciais de serviços externos devem residir em variáveis de ambiente, jamais no código-fonte.
RNF-B06A ausência de uma variável de ambiente obrigatória deve impedir a inicialização da aplicação.
RNF-B07Stack traces não devem ser expostos em ambiente de produção.
RNF-B17Dados pessoais — e-mail e data de nascimento — não devem ser expostos em perfis públicos, e a regra deve ser aplicada em um único ponto do sistema.
RNF-B18Erros de responsabilidade do cliente (4xx) não devem ser registrados como falha do servidor nos logs.
RNF-B19Prazos e janelas de tempo devem ser avaliados pelo relógio do servidor, nunca pelo do cliente.
RNF-B20O cliente não deve determinar quais colunas são gravadas: campos atualizáveis devem constar de lista definida no servidor.
RNF-B24Rotas sensíveis devem ter limite de requisições por janela de tempo, com contagem independente por rota.
RNF-B25A aplicação deve identificar o cliente pelo endereço real quando atrás de proxy reverso, e não pelo endereço do proxy.
RNF-B26Mensagens de erro do servidor (5xx) devem ser mascaradas em produção; mensagens de erro do cliente (4xx) devem chegar ao usuário como foram escritas.
RNF-B27Códigos de verificação devem ser persistidos como hash, ter prazo de validade, limite de tentativas e consumo único.
RNF-B28A exclusão de conta não deve alterar conteúdo de terceiros.

Evolução do esquema​

IDDescrição
RNF-B21O arquivo de esquema deve refletir o estado atual do banco, e o histórico de alterações deve ser rastreável pelo versionamento do código.
RNF-B22Consultas de listagem e de busca devem ser cobertas por índices correspondentes à sua ordenação e aos seus filtros.
RNF-B23O banco deve usar codificação de quatro bytes por caractere, comportando acentuação e emojis.

Manutenibilidade​

IDDescrição
RNF-B08Nenhuma instrução SQL deve existir fora da camada de repositórios.
RNF-B09Repositórios devem receber a conexão com o banco por injeção de dependência.
RNF-B10O tratamento de erros deve ser centralizado em um único middleware.
RNF-B11A especificação OpenAPI deve ser gerada a partir de anotações no próprio código das rotas.

Performance e integridade​

IDDescrição
RNF-B12Toda listagem deve ser paginada, com teto de registros por página definido no servidor.
RNF-B13Consultas paginadas devem declarar ordenação explícita, garantindo estabilidade entre páginas.
RNF-B14Contadores de curtidas e comentários devem ser derivados por agregação, não materializados em coluna.
RNF-B15Consultas de listagem não devem executar uma requisição adicional por item retornado.
RNF-B16Uploads devem ter limite de tamanho e lista de tipos aceitos verificados antes do envio ao serviço externo.