Skip to content

DevFreela é um projeto realizado durante o curso de Formação em ASP .Net Core na LuisDev Treinamentos. Foi realizado visando praticar minhas habilidades com as tecnologias propostas.

Notifications You must be signed in to change notification settings

backjoao88/dev-freela-api-c-sharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevFreela

O projeto DevFreela foi realizado durante o curso de Formação em ASP Net Core afim de aperfeiçoar minhas habilidades na construção de APIs. Ele consiste em dois serviços (um de projetos e um de pagamentos) que se comunicam entre sí.

Descrição

Plataforma para cadastro e contratação de serviços de Freelancer de desenvolvedores no formato de API. Oferece uma plataforma unificada para os clientes contratarem os melhores freelancers para seus projetos, de maneira confiável e gerenciada.

Entidades

User

  • ID (int)
  • FirstName (string)
  • LastName (string)
  • Email (string)
  • Skills (list of skill)
  • OwnedProjects (list of project)
  • FreelancerProjects (list of project)

Project

  • ID (int)
  • Title (string)
  • Description (string)
  • IdClient (int)
  • IdFreelancer (int)
  • TotalCost (decimal)
  • StartedAt (datetime)
  • FinishedAt (datetime)
  • Comments (list of comment)

Skill

  • Description (string)

Comment

  • ID (int)
  • IdProject (int)
  • IdUser (int)
  • Content (string)

Pilha de tecnologias

  • .NET 8.0
  • Entity Framework Core 8.0

Regras de negócio

  • Um projeto não pode ser iniciado caso já tenha sido finalizado;
  • Um projeto não pode ser finalizado caso já tenha sido iniciado;
  • Ao criar um projeto, o título e a descrição são obrigatórios;
  • O usuário é obrigado a informar pelo menos uma habilidade ao se cadastrar;
  • O email deve ser único para cada usuário na plataforma;
  • Um usuário pode ser tanto cliente quanto freelancer, mas não pode ser ambos em um mesmo projeto;

Conceitos aplicados

  • Utilizar docker para gerenciar os serviços e os bancos de dados;
  • Aplicar documentação de APIs com o Swagger
  • Arquiteturar camadas da arquitetura limpa
  • Aplicar ORM EfCore nas entidades
  • Arquiteturar o padrão CQRS no projeto
  • Arquiteturar o padrão Repository nas entidades do projeto
  • Aplicar validação de APIs com middleware global na camada Application
  • Aplicar autenticação com JWT
    • Criar funcão para gerar token JWT
    • Gerar migrations com dados de Login;
    • Computar o SHA256 ao salvar a senha no banco de dados (salvar a role também);
    • Implementar o login nos serviços;
    • Configurar as permissões por recurso e por papel;
  • Aplicar testes unitários com o NSubstitute:
    • Entender o que é um Mock;
    • Entender correspondencia de argumentos;
    • Criar dois testes utilizando o NSubstitute;
  • Criar um serviço de pagamento para o serviço de projetos
    • Criar uma abstração de pagamentos no serviço de projetos;
    • Criar uma conexão entre o serviço de projetos e pagamentos via HTTP;
    • Criar um repositório para salvar os pagamentos em um banco de dados MySQL;
    • Criar uma conexão entre o serviço de projetos e pagamentos via mensagens (RabbitMQ);
      • No serviço de projetos, criar a conexão com as filas RabbitMQ e publicar uma mensagem de pagamento ao finalizar projeto;
      • No serviço de pagamentos, criar um background service para consumir as mensagens de pagamentos;
        • Caso seja realizado com sucesso, enviar uma mensagem para uma fila de "Pagamentos aprovados";
        • Caso seja realizado com falha, enviar uma mensagem para uma fila de "Pagamentos reprovados";
      • No serviço de projetos, consumir as mensagens das filas aprovados e reprovados, e realizar alteração correspondente no projeto;
  • Aplicar conceitos de DevOps com o Azure

Linkedin

  • Realizar publicação

About

DevFreela é um projeto realizado durante o curso de Formação em ASP .Net Core na LuisDev Treinamentos. Foi realizado visando praticar minhas habilidades com as tecnologias propostas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published