Especificação: TODO List MVC¶
Status: Completo ✅
Data: 2026-05-10
Versão: 1.0
Resumo Executivo¶
Aplicação TODO List em ASP.NET Core MVC que permite usuários: 1. Cadastrar tarefas com título 2. Remover tarefas da lista 3. Adicionar lembretes às tarefas
Requisitos não-funcionais: - Armazenamento em memória apenas (sem banco de dados) - Dados perdidos ao reiniciar aplicação - Interface responsiva - Mensagens em português
User Stories¶
US1: Cadastrar Nova Tarefa¶
Como usuário
Quero criar novas tarefas digitando um título
Para organizar minhas atividades
Critérios de Aceitação¶
- ✅ Campo de entrada de texto para título
- ✅ Botão "Criar" para confirmar
- ✅ Validação: título não pode ser vazio
- ✅ Validação: título não pode ter apenas espaços
- ✅ Nova tarefa aparece imediatamente na lista
- ✅ Campo é limpo após sucesso
- ✅ Mensagens de erro em português
- ✅ Título aceita até 500 caracteres
Cenários de Aceitação¶
- Criar com título válido → Tarefa aparece na lista
- Criar com título vazio → Erro: "O título não pode ser vazio"
- Criar com 500 caracteres → Sucesso
- Criar com 501+ caracteres → Erro: "Máximo 500 caracteres"
US2: Remover Tarefa¶
Como usuário
Quero deletar tarefas que não faz mais sentido
Para manter minha lista organizada
Critérios de Aceitação¶
- ✅ Cada tarefa tem botão "Deletar"
- ✅ Clique em deletar remove tarefa imediatamente
- ✅ Tarefa desaparece da tela
- ✅ Confirmação obrigatória (para evitar cliques acidentais)
- ✅ Impossível recuperar tarefa deletada
- ✅ Lista é atualizada automaticamente
Cenários de Aceitação¶
- Confirmar delete → Tarefa removida
- Cancelar delete → Tarefa permanece
- Delete múltiplas tarefas → Todas removidas corretamente
US3: Adicionar Lembrete à Tarefa¶
Como usuário
Quero adicionar notas/lembretes às tarefas
Para guardar detalhes importantes
Critérios de Aceitação¶
- ✅ Cada tarefa tem campo para adicionar lembrete
- ✅ Lembrete é texto livre (sem limite rígido)
- ✅ Múltiplos lembretes por tarefa são permitidos
- ✅ Lembrete aparece em badge abaixo da tarefa
- ✅ Possibilidade de remover lembrete
- ✅ Lembrete é opcional (não bloqueia tarefa)
Cenários de Aceitação¶
- Adicionar lembrete a tarefa → Aparece em badge
- Adicionar múltiplos lembretes → Todos aparecem
- Remover lembrete → Desaparece da tela
- Remover tarefa → Todos os lembretes removidos
Funcionalidades Adicionais¶
Marcar Tarefa como Concluída¶
- Checkbox em cada tarefa
- Concluída: strikethrough + cor muted
- Possibilidade de desmarcar
- Mudança imediata na interface
Editar Tarefa¶
- Botão "Editar" em cada tarefa
- Formulário pré-preenchido com título atual
- Mesmas validações de criação
- Redirect para lista após sucesso
Modelo de Dados¶
Entidade: Tarefa¶
public class Tarefa
{
public Guid Id { get; set; } // PK, gerado automaticamente
public string Titulo { get; set; } // Obrigatório, max 500 chars
public bool Concluida { get; set; } // Default: false
public DateTime DataCriacao { get; set; } // UTC, automático
public DateTime DataModificacao { get; set set; } // UTC, atualizado em edições
public List<Lembrete> Lembretes { get; set; } // Coleção
}
Entidade: Lembrete¶
public class Lembrete
{
public Guid Id { get; set; } // PK, gerado automaticamente
public string Texto { get; set; } // Obrigatório
public DateTime DataCriacao { get; set; } // UTC, automático
}
Requisitos Não-Funcionais¶
| Requisito | Descrição | Status |
|---|---|---|
| Armazenamento | Em-memória (List |
✅ |
| Persistência | Nenhuma entre sessões | ✅ |
| Performance | <200ms por operação | ✅ |
| Responsivo | Mobile, Tablet, Desktop | ✅ |
| Idioma | Português Brasileiro | ✅ |
| Browser | Chrome, Firefox, Safari | ✅ |
| Deployment | Servidor gratuito | ⏳ |
Fora do Escopo (MVP)¶
- ❌ Autenticação/Usuários
- ❌ Persistência em banco de dados
- ❌ Categorias/Tags
- ❌ Prioridades
- ❌ Datas de vencimento
- ❌ Notificações
- ❌ Compartilhamento
- ❌ Integração com calendários
Especificação validada contra Constitution ✅