Skip to content

Backend do sistema de gerenciamento de orçamento de serviços.

License

Notifications You must be signed in to change notification settings

evans-costa/backend-servicequotes

Repository files navigation


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.

About

Backend do sistema de gerenciamento de orçamento de serviços.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages