- Funcionalidades da Aplicação Java
- Endpoints de Funcionamento das Entidades
- Tecnologias Utilizadas
- Como Rodar a API
- Dockerfile
- Uso do Azure CLI para provisionamento da aplicação
- Grupo Desenvolvedor
A Solução Pulse é uma proposta para otimizar a gestão dos pátios da empresa Mottu, responsável pela alocação e controle de motorcycles. A identificação de cada motorcycle é feita por meio da tecnologia Beacon BLE, permitindo rastreabilidade em tempo real.
Embora o sistema Java não receba diretamente os sinais BLE, ele é responsável por gerenciar o cadastro e a associação entre motorcycles e seus respectivos beacons, garantindo a identificação precisa a partir do código BLE detectado por dispositivos externos (como scanners BLE).
A aplicação foi desenvolvida com Java + Spring Boot e segue uma arquitetura em camadas, oferecendo os seguintes recursos principais:
- 📌 Cadastro e edição de motorcycles, incluindo dados como modelo, status e condição mecânica.
- 📡 Cadastro de beacons BLE, com identificador único.
- 🔗 Associação entre motorcycles e beacons, permitindo a identificação automatizada via código BLE.
- 🧭 Sugestão de alocação no pátio, com base na condição mecânica e status de uso da motorcycle.
- 📊 Consulta de motorcycles por ID, status, zona ou código BLE.
- 🗺️ Gestão das zonas do pátio, com base em espaço disponível e tipo de motorcycle.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /motorcycle/{id} |
Busca Moto por ID |
| GET | /motorcycle |
Lista todas as Motos |
| GET | /motorcycle/pageable |
Lista Motos paginadas |
| POST | /motorcycle/{patioId} |
Cadastra Moto vinculado a Pátio |
| PUT | /motorcycle/{id} |
Atualiza Moto por ID |
| DELETE | /motorcycle/{id} |
Deleta Moto por ID |
| GET | /motorcycle/beacon/{codigo} |
Busca Moto pelo código UUID do Beacon |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /parking |
Lista todos os Pátios |
| GET | /parking/pageable |
Lista Pátios paginados |
| GET | /parking/{id} |
Busca Pátio por ID |
| GET | /parking/{id}/motorcycles |
Lista Motos de um Pátio |
| POST | /parking |
Cadastra novo Pátio |
| PUT | /parking/{id} |
Atualiza Pátio por ID |
| DELETE | /parking/{id} |
Deleta Pátio por ID |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /beacon/{id} |
Busca Beacon por ID |
| GET | /beacon |
Lista todos os Beacons |
| GET | /beacon/pageable |
Lista Beacons paginados |
| POST | /beacon/{motoId} |
Cadastra Beacon vinculado a Moto |
| PUT | /beacon/{id} |
Atualiza Beacon por ID |
| DELETE | /beacon/{id} |
Deleta Beacon por ID |
- Java 17
- Spring Boot 3.4.4
- Spring Data JPA
- Spring Boot Starter Web
- Springdoc OpenAPI (Swagger UI)
- H2 Database (banco em memória para desenvolvimento)
- Clone o repositório:
git clone https://github.com/seu-usuario/pulse-api.git](https://github.com/ChallengeMottu/JavaSystem.git- Compile e rode a aplicação usando Maven
mvn spring-boot:run- Após a aplicação iniciar, acesse a documentação da API pelo navegador em:
http://localhost:8080/swagger-ui.html- Para acessar o console do H2, acesse:
http://localhost:8080/h2-consoleO projeto conta com a inserção de um Dockerfile em sua raiz para a criação da imagem da aplicação.
docker build -t [nome-da-imagem]:[versao-da-imagem] .Para a estruturação e criação de uma Máquina Virtual Linux na Azure responsável por rodar o Container com a imagem da aplicação desenvolvida, utiliza-se os seguintes comandos:
az group create -l eastus -n rg-vm-pulseaz vm create --resource-group rg-vm-pulse --name vm-pulse --image Canonical:ubuntu-24_04-lts:minimal:24.04.202505020
--size Standard_B2s --admin-username admin_pulse --admin-password pulse_system@123sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-worldaz network nsg rule create --resource-group rg-vm-challenge --nsg-name vm-challengeNSG --name port_8080 --protocol tcp --priority 1010 --destination-port-range 8080az network nsg rule create --resource-group rg-vm-challenge --nsg-name vm-challengeNSG --name port_80 --protocol tcp --priority 1020 --destination-port-range 80docker run -d -p 8080:8080 gabrielasreiss/pulse_system:1.0- Gabriela de Sousa Reis - RM558830
- Laura Amadeu Soares - RM556690
- Raphael Lamaison Kim - RM557914