Aplicação para estudo desenvolvida durante o curso DevInHouse - turma Audaces. Trata-se de uma simulação de API Rest de um serviço web do setor de modas, onde é possivel gerenciar e fazer operações com: usuários, coleções e modelos de roupa.
-
A LABFashion LTDA, empresa líder no segmento tecnológico para gestão de moda, está com um projeto novo intitulado LAB Clothing Collection, um software audacioso para gestão de coleções de moda no setor de vestuário.
-
Como a empresa é multinacional, a demanda é que os sistema seja desenhado de forma que possa escalar tanto em questão de performace, quanto também com o uso de boas práticas para permitir a manutenção de outros desenvolvedores no futuro.
-
ShaperAnnotationsForDataTypes (biblioteca criada por mim apenas para fins de estudos e ajudar na criação da aplicação) ( github )
-
Docker (não obrigatório)
-
A aplicação foi feita usando o Domain-Driven Design (DDD), separando as aplicações por camadas. Tambem foi utilizado o SOLID.
-
Após baixar o projeto, você precisará criar um '.env' na pasta raíz.
-
Use o .env.example como base, preenchendo os dad,os especificos que ele pede. Caso use o docker, o docker-compose gerará a imagem já com os dados inseridos no .env.
-
Você pode colocar os dados do servidor do SQL Server diretamente também, mas, caso queira usar o docker, após fazer o .env, use o comando:
docker compose up -d
obs: Caso queira usar o docker, lembre-se de escolher uma senha que seja compatível com as regras de senha da imagem do SQL Server no docker.
-
Isso fará a imagem do docker subir, com os devidos dados inseridos no .env. Além de já configurar a aplicação para acessá-lo.
-
Espere a imagem subir completamente.
-
Uma vez feito isso, você pode rodar a aplicação com sua ide favorita ou simplesmente usar o dotnet cli ao inserir o comando:
dotnet watch
-
Com isso a aplicação vai rodar com o Hot Reload ativado e abrirá um swagger no seu navegador, muito provavelmente na url: http://localhost:5041/swagger/index.html
-
Ela também vai executar dados iniciais no banco.
-
Sendo uma Rest API, basta fazer uma requisição para seus endpoints. Fiz o esforço de deixar o Swagger detalhado explicando quais são as requisições possiveis, basta acessá-lo.
-
Você pode usar um Postman ou Insomnia para acessar os endpoints, ou o próprio swagger para fazer as requisições.
-
Implementar testes automáticos: Apesar da ideia inicial é que já nessa versão tivesse testes unitários, mas não foi possível implementar pelo tempo.
-
Implementação de segurança: A ideia é utilizar algum serviço de SSO para autenticação e autorização da aplicação (como keycloak);
-
Melhorar conceitos de SOLID e Clean Code Muito do código foi feito às pressas, muita coisa pode ser melhorada, como por exemplo, a injeção de dependência que está sendo feita diretamente pela instância. É preciso isolar mais as camadas através de interfaces.
-
Transformar o sistema em reativo para que possa ser escalável.