Rocketseat

Gerenciador de tarefas simples

Gerenciador de tarefas simples

Conheça o projeto

O objetivo é criar uma API REST usando C# .NET e arquitetura em camadas, aplicando boas práticas para separar a Camada de Comunicação e a Camada de Regras de Negócio.
A API deve permitir criar, visualizar, editar e excluir tarefas, respeitando os critérios definidos.

Instruções

Estrutura, regras e requisitos do projeto

1. Requisitos

  • A API deve iniciar sem erros e expor os endpoints no Swagger;
  • Deve ser possível criar tarefas com todos os campos obrigatórios;
  • Deve ser possível listar todas as tarefas existentes;
  • Deve ser possível buscar uma tarefa pelo seu ID;
  • Deve ser possível atualizar uma tarefa existente (nome, descrição, prioridade, data, status);
  • Deve ser possível excluir uma tarefa pelo ID;
  • Os dados devem ser validados:
    • Nome obrigatório e com tamanho máximo de 100 caracteres;
    • Data limite não pode ser no passado na criação;
    • Prioridade e Status devem aceitar apenas os valores pré-definidos;

Camadas

  • Estruturar o projeto com a Camada de Comunicação (Controllers);
  • Estruturar o projeto com a Camada de Regras de Negócio (Services).

Sugestão de campos

CampoTipoObrigatórioRestrições / Valores Permitidos
idGUIDSimGerado automaticamente; único para cada tarefa
namestringSimMáximo de 100 caracteres
descriptionstringNãoMáximo de 500 caracteres
prioritystringSimhigh, medium ou low
dueDateDateTimeSimData futura para conclusão da tarefa
statusstringSimpending, inProgress ou completed

Endpoints

  • Crie todos os endpoints necessários;
MétodoEndpointDescrição
POST/api/tasksCriar uma nova tarefa
GET/api/tasksListar todas as tarefas
GET/api/tasks/{id}Buscar uma tarefa pelo ID
PUT/api/tasks/{id}Atualizar informações de uma tarefa
DELETE/api/tasks/{id}Excluir uma tarefa pelo ID

Status Code

  • Retorne status code apropriados pra cada situação:
    • 200 OK: operações de leitura e atualização;
    • 201 Created : criação de tarefa;
    • 204 No Content : exclusão;
    • 400 Bad Request : dados inválidos;
    • 404 Not Found : tarefa não encontrada.

2. Desenvolvendo o projeto

Para desenvolver esse projeto, recomendamos utilizar as principais tecnologias que utilizamos durante o desenvolvimento do primeiro módulo da formação.

Caso você tenha alguma dificuldade você pode ir no nosso fórum e deixar sua dúvida por lá!

Após terminar o desafio, caso você queira, você pode tentar dar o próximo passo e deixar a aplicação com a sua cara. Tente mudar o layout, cores, ou até adicionar novas funcionalidades para ir além! 🚀


3. Entrega

Após concluir o desafio, você deve enviar a URL do seu código no Github.

Além disso, que tal fazer um post no LinkedIn compartilhando o seu aprendizado e contando como foi a experiência? É uma excelente forma de demonstrar seus conhecimentos e atrair novas oportunidades!

Obs: Se você se sentir à vontade, pode postar um print do resultado final e nos marcar! Vai ser incrível acompanhar a sua evolução! 💜


4. Considerações finais

Lembre-se que o intuito de um desafio é te impulsionar, por isso, dependendo do desafio, pode ser que você precise ir além do que foi discutido em sala de aula. Mas isso não é algo ruim: ter autonomia para buscar informações extras é uma habilidade muito valiosa e vai ser ótimo pra você treinar ela aqui com a gente!

E lembre-se: tenha calma! Enfrentar desafios faz parte do seu processo de aprendizado!

Se precisar de alguma orientação ou suporte, estamos aqui com você! Bons estudos e boa prática! 💜


Feito com 💜 por Rocketseat 👋

Tarefas

Use este checklist para ajudar a organizar a sua entrega

Projetos relacionados