Requisitos Funcionais
Autenticação
| ID | Descrição | Status |
|---|---|---|
| RF01 | O sistema deve permitir cadastro com nome, apelido, e-mail, senha, data de nascimento e nacionalidade | Implementado |
| RF02 | O sistema deve autenticar o usuário via e-mail ou @ do usuário, e senha | Implementado |
| RF03 | O login deve retornar um token JWT com validade de 24h | Implementado |
| RF04 | Rotas protegidas devem redirecionar para o login caso o token esteja ausente | Implementado |
| RF17 | O formulário de cadastro deve oferecer apenas as nacionalidades registradas no banco de dados | Implementado |
| RF32 | O cadastro deve exigir o aceite explícito da política de privacidade | Implementado |
| RF33 | O sistema deve validar o aceite da política também no servidor, independentemente da interface | Implementado |
| RF34 | A conta recém-criada deve ter o e-mail confirmado por código antes de permitir o login | Implementado |
| RF35 | O usuário deve poder solicitar o reenvio do código de confirmação | Implementado |
| RF36 | O usuário deve poder redefinir a senha por código enviado ao e-mail | Implementado |
Feed
| ID | Descrição | Status |
|---|---|---|
| RF05 | O usuário deve poder visualizar publicações de outros usuários no feed | Implementado |
| RF06 | O usuário deve poder criar novas publicações de texto | Implementado |
| RF07 | O usuário deve poder curtir publicações | Implementado |
| RF08 | O usuário deve poder comentar em publicações | Implementado |
| RF18 | O feed deve ser paginado, carregando publicações sob demanda | Implementado |
| RF19 | Os contadores de curtidas e comentários devem refletir os registros persistidos, e não valores mantidos no cliente | Implementado |
| RF25 | O autor deve poder excluir suas próprias publicações e comentários | Implementado |
| RF26 | O autor deve poder editar seus comentários nos primeiros quinze minutos após a publicação | Implementado |
| RF27 | Conteúdo editado deve ser identificado como tal para os demais usuários | Implementado |
| RF28 | O autor deve poder editar suas publicações nos primeiros quinze minutos | Implementado |
| RF37 | Cada publicação deve ter uma página própria, com autor, conteúdo e comentários | Implementado |
Chat
| ID | Descrição | Status |
|---|---|---|
| RF09 | O usuário deve poder iniciar uma conversa privada com outro usuário | Planejado |
| RF10 | Mensagens devem ser entregues em tempo real via WebSockets | Planejado |
| RF11 | O histórico de mensagens deve ser carregado ao abrir uma conversa | Planejado |
| RF12 | Mensagens devem ter status de entrega — pendente, enviada, recebida e lida | Planejado |
Perfil
| ID | Descrição | Status |
|---|---|---|
| RF13 | O usuário deve poder visualizar e editar seu próprio perfil | Implementado |
| RF14 | O usuário deve poder visualizar o perfil público de outros usuários | Implementado |
| RF15 | O usuário deve poder seguir e deixar de seguir outros usuários | Implementado |
| RF16 | O usuário deve poder excluir sua conta com confirmação em três etapas | Implementado |
| RF38 | O perfil público não deve expor e-mail, data de nascimento nem nacionalidade | Implementado |
| RF39 | O perfil deve listar as publicações do usuário, no próprio perfil e no de terceiros | Implementado |
| RF40 | A exclusão de conta deve exigir código enviado ao e-mail cadastrado | Implementado |
| RF41 | A política de privacidade deve estar acessível a partir de "Conta e segurança" | Implementado |
| RF20 | O usuário deve poder definir uma foto de perfil, com recorte antes do envio | Implementado |
| RF21 | O usuário deve poder registrar uma bio em seu perfil | Implementado |
| RF29 | O usuário deve poder editar nome, bio, e-mail, nascimento e nacionalidade | Implementado |
| RF30 | A alteração de e-mail deve exigir a senha atual | Implementado |
| RF43 | A exclusão de conta deve apagar o conteúdo publicado e anonimizar o cadastro, liberando e-mail e @ para novo uso | Implementado |
| RF44 | A edição dos dados do perfil deve estar concentrada em um único lugar, agrupada por quem enxerga cada campo | Implementado |
Busca
| ID | Descrição | Status |
|---|---|---|
| RF22 | O usuário deve poder pesquisar outros usuários por nome ou @ | Implementado |
| RF31 | O usuário deve poder pesquisar publicações pelo conteúdo | Implementado |
| RF42 | O resultado da busca por publicações deve levar à página da publicação | Implementado |
| RF23 | Os resultados da busca devem ser paginados | Implementado |
| RF24 | Páginas ainda não implementadas devem informar seu estado de desenvolvimento ao usuário | Implementado |