Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/evans-costa/backend-servicequotes
Backend do sistema de gerenciamento de orçamento de serviços.
https://github.com/evans-costa/backend-servicequotes
asp-net-core aws-s3 azure dotnet entity-framework-core rest-api sql-server
Last synced: 19 days ago
JSON representation
Backend do sistema de gerenciamento de orçamento de serviços.
- Host: GitHub
- URL: https://github.com/evans-costa/backend-servicequotes
- Owner: evans-costa
- License: mit
- Created: 2024-06-20T21:45:49.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-12-04T14:20:01.000Z (2 months ago)
- Last Synced: 2024-12-04T15:25:46.207Z (2 months ago)
- Topics: asp-net-core, aws-s3, azure, dotnet, entity-framework-core, rest-api, sql-server
- Language: C#
- Homepage:
- Size: 143 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
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
[![Build and deploy Azure Web App](https://github.com/evans-costa/backend-servicequotes/actions/workflows/deploy.yml/badge.svg)](https://github.com/evans-costa/backend-servicequotes/actions/workflows/deploy.yml)
![.Net](https://img.shields.io/badge/.NET-5C2D91?style=for-the-badge&logo=.net&logoColor=white)
![MicrosoftSQLServer](https://img.shields.io/badge/Microsoft%20SQL%20Server-CC2927?style=for-the-badge&logo=microsoft%20sql%20server&logoColor=white)
![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge&logo=amazon-aws&logoColor=white)
![Azure](https://img.shields.io/badge/azure-%230072C6.svg?style=for-the-badge&logo=microsoftazure&logoColor=white)
Introdução •
Funcionalidades •
Motivação •
Instalação •
Configuração •
Estrutura do Projeto •
TODO / Melhorias •
Licença## 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çãoMeu 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](https://dotnet.microsoft.com/pt-br/download) instalado na sua máquina. Opcionalmente você pode instalar o [Docker](https://www.docker.com/get-started/) com [Docker Compose](https://docs.docker.com/compose/install/) para rodar o serviço de banco de dados localmente. Da sua linha de comando:
```sh
# 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
```sh
# 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
// appsettings.Development.json
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=;User Id=sa;Password=;TrustServerCertificate=True;"
},
"AWS": {
"BucketName": "",
"ProfileName": "",
"AccessKey": "",
"SecretKey": "",
"Region": ""
}
}
```
```sh
// secrets.json
dotnet user-secrets init
dotnet user-secrets set "ConnectionsStrings:DefaultConnection" "Server=localhost,1433;Database=;User Id=sa;Password=;TrustServerCertificate=True;"dotnet user-secrets set "AWS:BucketName" ""
dotnet user-secrets set "AWS:ProfileName" ""
dotnet user-secrets set "AWS:AccessKey" ""
dotnet user-secrets set "AWS:SecretKey" ""
dotnet user-secrets set "AWS: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](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html).- 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`:
```sh
# 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](https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16).- Rode as migrações para criar o banco de dados e suas tabelas:
```sh
# 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:
```sh
# 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](https://insomnia.rest/download) ou [Postman](https://www.postman.com/).
## Estrutura do projeto
### Diagrama UML
![uml-diagram](https://github.com/user-attachments/assets/db1fda11-f831-42b6-8ed9-16db808e503f)### Diagrama Banco de Dados
![db-diagram](https://github.com/user-attachments/assets/530ce4ee-f06e-4532-bf33-aa7b7386e85f)## 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çaThe MIT License (MIT) 2024 - Evandro Costa. Por favor, dê uma olhada no arquivo LICENSE para mais detalhes.