
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
Campo | Tipo | Obrigatório | Restrições / Valores Permitidos |
---|---|---|---|
id | GUID | Sim | Gerado automaticamente; único para cada tarefa |
name | string | Sim | Máximo de 100 caracteres |
description | string | Não | Máximo de 500 caracteres |
priority | string | Sim | high, medium ou low |
dueDate | DateTime | Sim | Data futura para conclusão da tarefa |
status | string | Sim | pending, inProgress ou completed |
Endpoints
- Crie todos os endpoints necessários;
Método | Endpoint | Descrição |
---|---|---|
POST | /api/tasks | Criar uma nova tarefa |
GET | /api/tasks | Listar 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 👋
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
Campo | Tipo | Obrigatório | Restrições / Valores Permitidos |
---|---|---|---|
id | GUID | Sim | Gerado automaticamente; único para cada tarefa |
name | string | Sim | Máximo de 100 caracteres |
description | string | Não | Máximo de 500 caracteres |
priority | string | Sim | high, medium ou low |
dueDate | DateTime | Sim | Data futura para conclusão da tarefa |
status | string | Sim | pending, inProgress ou completed |
Endpoints
- Crie todos os endpoints necessários;
Método | Endpoint | Descrição |
---|---|---|
POST | /api/tasks | Criar uma nova tarefa |
GET | /api/tasks | Listar 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