Repositório com arquivo do desafio técnico feito com intuito de aplicar conhecimentos em Web Api .Net.
Construir um sistema de gerenciamento de tarefas simples com autenticação e autorização.
- O sistema deve permitir que os usuários criem, atualizem e finalizem tarefas;
- As tarefas devem ter título, descrição, data de entrega e status (Em andamento ou finalizada);
- A linguagem deve ser C#, preferencialmente utilizando WEB API ou Razor;
- Utilizar banco de dados SQL (SQL Server ou SQLite);
- Implementar operações de CRUD para tarefas;
- Possuir uma página com relatório de tarefas conclúidas e em andamento por usuário;
- Implementar ativação de conta em 2 fatores, enviando um e-mail com código de ativação da conta do usuário e validando o código para ativa-la;
- Implementar um sistema de autenticação simples, onde os usuários devem realizar o login para acessar ao sistema. Pode ser utilizado autenticação baseada em formulário ou autenticação de token
- ASP.NET Core Web API;
- SQL Server;
- DDD;
- CQRS;
- Entity Framework;
- Migrations;
- Repository Pattern;
- Testes de unidade;
- Serviço de Email (SMTP);
- Users Secrets;
- Criptografia utilizando BCrypt;
- Unit Of Work;
- Jwt e Bearer Authentication;
- Design By Contract
- Flunt
- Validações rápidas com Fail Fast Validations
- SOLID;
- Injeção de dependência;
- KanBan para gerenciamento do projeto.
- Funcionalidade completa do sistema;
- Boas práticas de programação, organização do código, separação de responsabilidades e tratamento de erros;
- Utilização adequada do banco de dados para armazenar as tarefas;
- Validações para garantir integridade dos dados
-
Rodar um migration para criar a base
-
Criar pelo banco de dados chamado "Administrador" e outro chamado "Padrão", utilizando os comandos
INSERT INTO Perfil (Nome) values ('Administrador');
INSERT INTO Perfil (Nome) values ('Padrão');
-
Testar a api
- Estou aberto a receber avaliações e sugestões para melhoria do código. A intenção inicial é aplicar conhecimentos adquiridos ao longo da carreira afim de evoluir a experiência em diversos cenários.
- Também estou aberto a novos desafios, caso você possua algum desafio técnico, por favor entre em contato comigo através do meu e-mail: [email protected]