Este projeto é um sistema de gestão de hospitalidade, especificamente um sistema de reservas para hotéis. Ele permite aos usuários agendar, buscar a melhor solução custo-benefício e pré-reservar serviços e opções.
Para iniciar este projeto localmente usando Docker, execute o seguinte comando na pasta raiz do projeto:
docker-compose up --build
Após iniciar o projeto com o Docker Compose, a API estará disponível para acesso em http://localhost:8080/booking/api/. Essa URL segue o padrão http://localhost:8080/ seguido do contexto da aplicação (booking) e do endpoint da API (api). Dessa forma, você poderá interagir com os endpoints fornecidos pela API através dessa URL.
O sistema é composto por várias APIs:
- 👤API Clientes: Gerencia os dados do cliente.
curl --location 'http://localhost:8080/booking/api/clientes' \
--header 'Content-Type: application/json' \
--data-raw '{
"nomeCompleto":"Jack Sparrow",
"dataNascimento": "2023-04-12",
"cpf": "48464167040",
"sexo": "MASCULINO",
"email": "jackzinho_matadordedragao@gmail.com",
"telefone": "(11) 1234-1234",
"paisDeOrigem": "Brasil",
"endereco": "Rua dos alfineiros, 61"
}'
- 📒API Localidade: Gerencia os dados de localização.
curl --location 'http://localhost:8080/booking/api/localidades'
- 🏨API Prédio: Gerencia os dados do prédio.
curl --location 'http://localhost:8080/booking/api/predios' \
--header 'Content-Type: application/json' \
--data '{
"nome":"Localidade 2",
"localidadeId": 1
}'
- 😴API Quarto: Gerencia os dados do quarto.
curl --location 'http://localhost:8080/booking/api/quartos'
- 📅API Reserva: Gerencia os dados de reserva.
curl --location 'http://localhost:8080/booking/api/reservas' \
--header 'Content-Type: application/json' \
--data '{
"clienteId": 1,
"dataEntrada": "2023-05-01",
"dataSaida": "2023-05-05",
"quartosIds": [1, 2],
"servicosOpcionais": ["Jantar","Café da manhã"]
}'
- 🍴API Serviço Opcional: Gerencia os dados de serviços opcionais.
curl --location 'http://localhost:8080/booking/api/servicos-opcionais'
- 🪒 API Administrativa de bloqueio/desbloqueio de quartos: Gerencia os dados de reserva de um quarto administrativamente
curl --location --request POST 'http://localhost:8080/booking/api/quartos/2/admin/bloquear'
curl --location --request POST 'http://localhost:8080/booking/api/quartos/2/admin/bloquear'
Importante: para consultar todas as opções de APIs, favor acessar a collection POSTMAN disponibilizada:
- Spring initializr: Ferramenta para criação de projetos Spring Boot
- Spring Boot : Framework Web
- [Spring Boot Starter Web] Dependência para desenvolvimento Web
- [Spring Boot Starter Validation] Dependência para validação de formulários
- Maven: Gerenciador de dependências do projeto
- [JPA Repository] Gerenciador de interação entre camadas do projeto
- [Lombock] Dependência para requisições HTTP
- Postman: Ferramenta para teste de requisições HTTP
- [Open Api - Swagger] Dependência para gerar interface amigável para testes
- [H2] Banco de dados em memória
Optamos por adotar uma abordagem monolítica para o desenvolvimento de nossa aplicação, visando otimizar o tempo e concentrar esforços em outras áreas do projeto.
Decidimos alcançar uma cobertura de testes de 50% para refletir o conhecimento adquirido até o momento, permitindo-nos avançar para a próxima fase do projeto.
Durante o desenvolvimento, surgiram desafios relacionados à interpretação das regras de negócio, incluindo questões sobre os limites do escopo do projeto:
A escolha do banco de dados: Optamos por utilizar o H2, uma solução leve e eficiente para nossas necessidades. Testes e simulação de requisições HTTP: Para testar nossas APIs, decidimos utilizar ferramentas como o Swagger UI e o Postman, facilitando a criação e execução de testes automatizados. Esses foram alguns dos aspectos considerados pela equipe durante a fase inicial do projeto. A partir dessas definições, realizamos reuniões de alinhamento para planejar e coordenar nossas ações, garantindo uma execução eficiente e coerente com nossos objetivos.
Acessa o arquivo swagger da aplicação pelo link: api-docs.json Basta colar o documento no site: Swagger Editor
Você pode também pode consultar a documentação da API em run-time. Para isso, siga os passos abaixo:
Certifique-se de que a aplicação está em execução. Abra um navegador web e navegue até http://localhost:8080/booking/swagger-ui.html. Isso abrirá a interface do Swagger, onde você poderá explorar todos os endpoints disponíveis, seus parâmetros e respostas.
Para facilitar o teste e a utilização da API, disponibilizamos um arquivo do Postman com todas as requisições pré-configuradas. Você pode encontrar o arquivo em:
./fiap-hackathon-booking/src/main/resources/FIAP - Booking.postman_collection.json
Basta importar esse arquivo para o seu ambiente do Postman e começar a usar as requisições imediatamente.