Skip to content

Latest commit

 

History

History
154 lines (112 loc) · 7.32 KB

README.md

File metadata and controls

154 lines (112 loc) · 7.32 KB


API Service Quotes

Projeto Service Quote API desenvolvido com ASP.NET Core, utilizando serviços da AWS S3 e hospedagem e banco de dados da Azure

Introdução

Essa é uma API desenvolvida para o projeto Service Quote, usando .NET 8.0 com ASP.NET Core e Entity Framework Core, que permite criar e gerenciar clientes, produtos e cotações de serviços, emitindo arquivos em PDF para envio do orçamento consolidado ao cliente. A aplicação segue os princípios da Clean Architecture para facilitar melhor manutenção e possível escalabilidade do sistema, além de garantir a correta separação de responsabilidades.

O projeto está em produção usando os serviços da Azure, porém com acesso restrito devido ao free tier não ser tão generoso, pretendo disponibilizá-lo para maior acesso, mas enquanto isso você pode conferir uma demo hospedada no YouTube aqui.

Funcionalidades

  • Criar cotações (orçamentos) de serviços
  • Criar produtos e obter produtos cadastrados
  • Criar clientes e obter clientes cadastrados
  • Paginação de resultados de clientes e produtos
  • Geração de PDF com o orçamento consolidado (um template do documento gerado pode ser visto aqui)
  • Integração com o serviço S3 da Amazon para armazenar os documentos gerados

Motivação

Meu grande objetivo com esse projeto foi criar algo que "tocasse" o mundo real e que resolvesse um problema que via diariamente, nesse caso, foi o gerenciamento de orçamentos para serviços de eletricista de um familiar, como ele fazia tudo manualmente, em papel, e por vezes a cotação de materiais utilizados, o contato do cliente e o valor do orçamento se perdia, desenvolvi esse sistema para ajudá-lo a organizar o seu trabalho. Além disso, serviu para aprender uma linguagem nova e conceitos e paradigmas que essa linguagem trás, como POO, SOLID e Clean Architecture.

Instalação

  • Para instalar o projeto, você precisará ter o .NET 8.0 instalado na sua máquina. Opcionalmente você pode instalar o Docker com Docker Compose para rodar o serviço de banco de dados localmente. Da sua linha de comando:

    # Clone este repositório
    $ git clone https://github.com/evans-costa/backend-servicequotes.git
    
    # Entre na pasta do repositório clonado
    $ cd backend-servicequotes
  • Restaure as dependências do projeto

    # Restaure as depedências
    $ dotnet restore

    Configuração

  • Configure as variáveis de ambiente necessárias no arquivo appsettings.Development.json ou secrets.json:

     // appsettings.Development.json
     {
       "ConnectionStrings": {
         "DefaultConnection": "Server=localhost,1433;Database=<your-database-name>;User Id=sa;Password=<your-password>;TrustServerCertificate=True;"
       },
       "AWS": {
         "BucketName": "<your-bucket-name>",
         "ProfileName": "<your-profile-name>",
         "AccessKey": "<your-access-key-id>",
         "SecretKey": "<your-secret-key>",
         "Region": "<your-bucket-region>"
       }
    }	
     // secrets.json
     dotnet user-secrets init
     
     dotnet user-secrets set "ConnectionsStrings:DefaultConnection" "Server=localhost,1433;Database=<your-database-name>;User Id=sa;Password=<your-password>;TrustServerCertificate=True;"    
    
     dotnet user-secrets set "AWS:BucketName" "<your-bucket-name>"
     dotnet user-secrets set "AWS:ProfileName" "<your-profile-name>"
     dotnet user-secrets set "AWS:AccessKey" "<your-access-key-id>"
     dotnet user-secrets set "AWS:SecretKey" "<your-secret-key>"
     dotnet user-secrets set "AWS:Region" "<your-bucket-region>"

    📌 Nota:
    Caso não tenha um usuário cadastrado na AWS para correta configuração dos perfis e resolução do usuário da AWS, por favor, siga a documentação do SDK para .NET nesse link.

  • Se você está usando o Docker, rode o seguinte comando, não esquecendo de usar a mesma senha definida nas variáveis de ambiente no arquivo docker-compose.yml:

    # Suba o container do SQL Server
    $ docker compose up -d

    📌 Nota:
    Se você não estiver usando o Docker, precisará instalar e configurar o SQL Server Management disponível nesse link.

  • Rode as migrações para criar o banco de dados e suas tabelas:

    # Rode as migrações
    $ dotnet ef database update
  • Você agora está pronto para rodar o projeto, aperte F5 no teclado, caso esteja usando o Visual Studio 2022, ou use o comando:

    # Rode o projeto
    $ dotnet watch run --launch-profile https --project src\ServiceQuotes.API\

    Isso irá abrir a interface do Swagger no seu navegador, onde você poderá consultar e testar os endpoints da aplicação, bem como ver os DTO's usados e os exemplos de requisição e resposta. Como alternativa, você pode testar usando seu cliente API REST favorito como o Insomnia ou Postman.

Estrutura do projeto

Diagrama UML

uml-diagram

Diagrama Banco de Dados

db-diagram

TODO / Melhorias

Funcionalidades

  • Criar endpoints para atualização e deleção de clientes, produtos e cotações
  • Fazer autenticação do usuário

Melhorias técnicas

  • Escrever testes para a aplicação (em andamento)
  • Script para rodar as migrações
  • Seed do banco de dados para propósitos de desenvolvimento

Infraestrutura

  • Configurar CI/CD para rodar os testes

Licença

The MIT License (MIT) 2024 - Evandro Costa. Por favor, dê uma olhada no arquivo LICENSE para mais detalhes.