Este projeto é uma aplicação full-stack que permite aos usuários encontrar o melhor pet shop para serviços de banho e tosa com base na data selecionada e no número de pets pequenos e grandes. O backend é construído com Java e Spring Boot, enquanto o frontend é desenvolvido usando React e TypeScript com Vite como ferramenta de build.
- Funcionalidades
- Requisitos
- Tecnologias Utilizadas
- Primeiros Passos
- Endpoint da API
- Premissas Assumidas
- Decisões de Projeto
-
Backend:
- API RESTful com endpoints para encontrar o melhor pet shop com base nos critérios fornecidos.
- Integração com um banco de dados MySQL para armazenar dados dos pet shops.
- Configuração de CORS para permitir requisições do frontend.
-
Frontend:
- Interface amigável para inserir dados e exibir resultados.
- Seletor de data para escolher a data.
- Campos de formulário para o número de pets pequenos e grandes.
- Exibe o nome do melhor pet shop e o custo total.
Certifique-se de ter as seguintes dependências instaladas no seu ambiente:
- Node.js (versão 16 ou superior)
- npm (versão 7 ou superior)
- Java (versão 21)
- MySQL
-
Backend:
- Java 21
- Spring Boot
- MySQL
- Maven
-
Frontend:
- React
- TypeScript
- Vite
- CSS
-
Clone o repositório:
git clone https://github.com/oarthurfc/testeDTI cd PetShopDTI
-
Configure o banco de dados MySQL:
- No arquivo application.properties localizado em src/main/resources, ajuste as credenciais do banco de dados conforme instalado na sua máquina previamente.
-
Construa e execute o backend:
mvn clean install mvn spring-boot:run
-
Configuração de CORS:
- Certifique-se de que a classe
CorsConfig
esteja configurada corretamente no pacoteconfig
para permitir requisições do frontend.
- Certifique-se de que a classe
-
Navegue até o diretório do frontend:
cd ../petshop-frontend
-
Instale as dependências:
npm install
-
Execute o frontend:
npm run dev
-
Acesse a aplicação:
- Abra seu navegador e navegue para
http://localhost:5173
.
- Abra seu navegador e navegue para
Encontra o melhor pet shop com base na data selecionada e no número de pets.
Parâmetros de Query:
data
(string): Data no formatodd/MM/yyyy
.qtdPequenos
(int): Número de pets pequenos.qtdGrandes
(int): Número de pets grandes.
Resposta:
{
"nome": "Nome do PetShop",
"precoTotal": 123.45
}
- O sistema assume que todos os dados de pet shops estão previamente cadastrados no banco de dados.
- A aplicação considera que os preços dos serviços de banho e tosa não mudam frequentemente.
- Arquitetura em camads: O projeto utiliza o padrão de arquitetura em camadas para separar as responsabilidades e facilitar a manutenção e evolução do sistema.
- Princípios SOLID: A aplicação foi desenvolvida seguindo os princípios SOLID para garantir um código mais modular, reutilizável e fácil de entender.
- Padrão Strategy: Utilizado para calcular o preço final dos serviços, permitindo uma fácil extensão para diferentes tipos de cálculos de adicionais (fixo ou percentual).
- DTOs (Data Transfer Objects): Utilizados para transferir dados entre o front-end e o back-end, garantindo que apenas as informações necessárias sejam enviadas.
- Configuração de CORS: Foi configurado CORS no back-end para permitir que o front-end em React se comunique com o servidor Spring Boot.