Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Repositório destinado a API WEB para o SaaS de Mapeamento e Organização de Pátio Mottu

Notifications You must be signed in to change notification settings

Leonardo-dev-br/heimdall-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

46 Commits

Repository files navigation

🚀 Projeto HEIMDALL – Sistema de Localização Inteligente de Motocicletas

📘 Descrição Geral

Este projeto foi desenvolvido como parte de um desafio proposto pela faculdade em parceria com a Startup Mottu, que atua no ramo de aluguel de motocicletas, especialmente voltado para entregadores de aplicativos. A proposta surgiu a partir de uma dor real enfrentada pela empresa: a dificuldade na gestão e localização eficiente das motocicletas dentro de seu pátio físico.

Com isso, desenvolvemos uma API Java para o sistema HEIMDALL, uma solução inovadora baseada em tecnologias IoT e RFID, com o objetivo de automatizar o controle, rastreamento e organização das motos no pátio.

🔍 Problema Identificado

Conforme a frota da Mottu cresce, o processo manual de identificação e entrega das motocicletas tem se tornado lento, ineficiente e sujeito a erros. Entre eles:

  • Tempo excessivo em horários de pico;
  • Alta chance de falhas humanas;
  • Desorganização do espaço físico;
  • Retrabalho da equipe de logística;
  • Dificuldade em escalar o serviço.

💡 A Ideia do Projeto

Pensando nisso, idealizamos uma solução tecnológica que modernize e otimize esse processo, garantindo:

  • Localização em tempo real das motos no pátio.
  • Redução drástica do tempo de busca por veículos.
  • Menor ocorrência de erros humanos durante entregas e devoluções.
  • Aumento da eficiência operacional e da experiência do cliente.

🛠️ Solução Proposta – HEIMDALL

O HEIMDALL é um Sistema de Mapeamento e Monitoramento Inteligente de Vagas, que integra sensores de presença e leitores RFID para rastrear a ocupação e localização das motocicletas dentro do pátio em tempo real.

Componentes da Solução

  • 🗂️ Zonamento Físico

    O pátio é dividido por tipo e modelo das motocicletas:

    • ZC1: Zona de Combustão 1 – Mottu-Sport
    • ZC2: Zona de Combustão 2 – Mottu-Pop
    • ZE: Zona Elétrica – Motos elétricas
  • 🏷️ Identificação das Vagas

    Cada vaga recebe um identificador único, ex:

    • ZC1VG1 → Zona de Combustão 1, Vaga 1
  • 📡 Monitoramento IoT + RFID

    • Sensores IoT detectam presença nas vagas.
    • Leitores RFID identificam a moto ocupante.
    • O sistema atualiza um mapa digital em tempo real, acessível via Web ou App.

⚙️ Tecnologias Utilizadas

  • Java 21
  • Spring Boot
  • Spring Data JPA
  • Spring Security (autenticação e autorização)
  • Thymeleaf (páginas de login/registro)
  • Oracle Database
  • Swagger (SpringDoc)
  • Lombok
  • Migrations com Flyway
  • Maven

🔐 Autenticação e Login

O projeto utiliza Spring Security integrado ao Thymeleaf para controle de autenticação.

  • Página de login: /login
  • Endpoint de autenticação: POST /login (interceptado pelo filtro do Spring Security)
  • Página de cadastro: /register
  • Após login bem-sucedido → redireciona para /histories

⚙️ Usuário Inicial (Flyway Seed)

Na primeira execução, o Flyway cria automaticamente um usuário administrador padrão para acesso inicial ao sistema:

  • E-mail: dimebag@hotmail.com
  • Senha: password (armazenada como hash BCrypt)

⚠️ Recomenda-se alterar a senha após o primeiro acesso.


🌐 Deploy

O sistema está hospedado e disponível publicamente em:

https://heimdall-java.onrender.com/

Para rodar localmente, utilize as instruções abaixo.


📁 Estrutura de Pastas

heimdall-java/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── heimdall/ │ │ │ ├── controller/ # Endpoints da API (camada de apresentação) │ │ │ ├── service/ # Regras de negócio │ │ │ ├── model/ # Entidades JPA (Moto, Vaga, etc.) │ │ │ ├── repository/ # Interfaces de acesso ao banco (JPA) │ │ │ ├── exception/ # Tratamento global de exceções │ │ │ ├── config/ # Configurações gerais (CORS, Security, Swagger, etc) │ │ │ ├── dto/ # Data Transfer Objects (entrada/saída da API) │ │ │ ├── specifications/ # Filtros dinâmicos para consultas (Criteria API) │ │ │ ├── constants/ # Constantes reutilizáveis │ │ │ └── HeimdallApplication.java # Classe principal (ponto de entrada) │ │ └── resources/ │ │ ├── application.properties # Configurações (DB, portas, etc) │ │ └── db/ │ │ └── migrations/ # Scripts de criação e seed do banco (Flyway) ├── pom.xml # Gerenciador de dependências Maven └── README.md # Documentação do projeto

🧭 Endpoints da API

🏍️ Motos (/motorcycles)

Método Endpoint Descrição
GET /motorcycles Lista todas as motos (com filtros e paginação)
GET /motorcycles/{id} Retorna uma moto específica por ID
POST /motorcycles Cadastra uma nova moto
PUT /motorcycles/{id} Atualiza os dados de uma moto
DELETE /motorcycles/{id} Remove uma moto pelo ID

🏷️ Tags RFID (/tags)

Método Endpoint Descrição
GET /tags Lista todas as tags (com filtros e paginação)
GET /tags/{id} Retorna uma tag específica por ID
POST /tags Cadastra uma nova tag RFID
PUT /tags/{id} Atualiza os dados de uma tag RFID
DELETE /tags/{id} Remove uma tag pelo ID

👤 Usuários (/users)

Método Endpoint Descrição
GET /users Lista todos os usuários (com filtros e paginação)
GET /users/{id} Retorna um usuário específico por ID
POST /users Cadastra um novo usuário
PUT /users/{id} Atualiza os dados de um usuário
DELETE /users/{id} Remove um usuário pelo ID

🚀 Como Executar o Projeto Localmente

Pré-requisitos

  • Java 21 instalado
  • Maven 3.8+ instalado
  • IDE (IntelliJ, Eclipse, VS Code) — opcional, mas recomendado
  • Banco de Dados Oracle configurado

⚙️ Configuração do Banco de Dados

Antes de rodar a aplicação, configure sua conexão no arquivo:

src/main/resources/application.properties

Com as variáveis:

  • spring.datasource.url
  • spring.datasource.username
  • spring.datasource.password

▶️ Rodando o projeto

# Clone o repositório git clone https://github.com/Leonardo-dev-br/heimdall-java.git # Acesse o diretóriocd heimdall-java # Compile o projeto mvn clean install # Rode a aplicação mvn spring-boot:run

A API estará disponível em:

http://localhost:8080

👥 Integrantes

Nome Completo RM
Pedro Henrique Lima Santos 558243
Vitor Gomes Martins 558244
Leonardo Pimentel Santos 557541

📘 Descrição Geral

Este projeto foi desenvolvido como parte de um desafio proposto pela faculdade em parceria com a Startup Mottu, que atua no ramo de aluguel de motocicletas, especialmente voltado para entregadores de aplicativos. A proposta surgiu a partir de uma dor real enfrentada pela empresa: a dificuldade na gestão e localização eficiente das motocicletas dentro de seu pátio físico.

Com isso, desenvolvemos uma API Java para o sistema HEIMDALL, uma solução inovadora baseada em tecnologias IoT e RFID, com o objetivo de automatizar o controle, rastreamento e organização das motos no pátio.

🔍 Problema Identificado

Conforme a frota da Mottu cresce, o processo manual de identificação e entrega das motocicletas tem se tornado lento, ineficiente e sujeito a erros. Entre eles:

  • Tempo excessivo em horários de pico;
  • Alta chance de falhas humanas;
  • Desorganização do espaço físico;
  • Retrabalho da equipe de logística;
  • Dificuldade em escalar o serviço.

💡 A Ideia do Projeto

Pensando nisso, idealizamos uma solução tecnológica que modernize e otimize esse processo, garantindo:

  • Localização em tempo real das motos no pátio.
  • Redução drástica do tempo de busca por veículos.
  • Menor ocorrência de erros humanos durante entregas e devoluções.
  • Aumento da eficiência operacional e da experiência do cliente.

🛠️ Solução Proposta – HEIMDALL

O HEIMDALL é um Sistema de Mapeamento e Monitoramento Inteligente de Vagas, que integra sensores de presença e leitores RFID para rastrear a ocupação e localização das motocicletas dentro do pátio em tempo real.

Componentes da Solução

  • 🗂️ Zonamento Físico

    • O pátio é dividido por tipo e modelo das motocicletas:
    • ZC1: Zona de Combustão 1 – Mottu-Sport
    • ZC2: Zona de Combustão 2 – Mottu-Pop
    • ZE: Zona Elétrica – Motos elétricas
  • 🏷️ Identificação das Vagas

    • Cada vaga recebe um identificador único, ex:
      • ZC1VG1 → Zona de Combustão 1, Vaga 1
  • 📡 Monitoramento IoT + RFID

    • Sensores IoT detectam presença nas vagas.
    • Leitores RFID identificam a moto ocupante.
    • O sistema atualiza um mapa digital em tempo real, acessível via Web ou App.

⚙️ Tecnologias Utilizadas

  • Java 21
  • Spring Boot
  • Spring Data JPA
  • Oracle Database
  • Swagger (SpringDoc)
  • Lombok
  • Migrations com flyway
  • Maven

Estrutura do projeto

📁 Estrutura de Pastas

heimdall-java/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── heimdall/
│ │ │ ├── controller/ # Endpoints da API (camada de apresentação)
│ │ │ ├── service/ # Regras de negócio
│ │ │ ├── model/ # Entidades JPA (Moto, Vaga, etc.)
│ │ │ ├── repository/ # Interfaces de acesso ao banco (JPA)
│ │ │ ├── exception/ # Tratamento global de exceções
│ │ │ ├── config/ # Configurações gerais da aplicação (ex: CORS, Swagger, etc)
│ │ │ ├── dto/ # Data Transfer Objects (entrada/saída da API)
│ │ │ ├── specifications/ # Filtros dinâmicos para consultas (Criteria API)
│ │ │ ├── constants/ # Constantes reutilizáveis na aplicação
│ │ │ └── HeimdallApplication.java # Classe principal (ponto de entrada)
│ │ └── resources/
│ │ ├── application.properties # Configurações de banco, portas, etc
│ │ └── db
│ │ └── migrations/ # Contem arquivos para criação de tabelas do banco de dados 
├── pom.xml # Gerenciador de dependências Maven
└── README.md # Documentação do projeto

🧭 Endpoints da API

🏍️ Motos (/motorcycles)

Método Endpoint Descrição
GET /motorcycles Lista todas as motos (com filtros e paginação)
GET /motorcycles/{id} Retorna uma moto específica por ID
POST /motorcycles Cadastra uma nova moto
PUT /motorcycles/{id} Atualiza os dados de uma moto
DELETE /motorcycles/{id} Remove uma moto pelo ID

🏷️ Tags RFID (/tags)

Método Endpoint Descrição
GET /tags Lista todas as tags (com filtros e paginação)
GET /tags/{id} Retorna uma tag específica por ID
POST /tags Cadastra uma nova tag RFID
PUT /tags/{id} Atualiza os dados de uma tag RFID
DELETE /tags/{id} Remove uma tag pelo ID

👤 Usuários (/users)

Método Endpoint Descrição
GET /users Lista todos os usuários (com filtros e paginação)
GET /users/{id} Retorna um usuário específico por ID
POST /users Cadastra um novo usuário
PUT /users/{id} Atualiza os dados de um usuário
DELETE /users/{id} Remove um usuário pelo ID

🚀 Como Executar o Projeto

Pré-requisitos

  • Java 21 instalado
  • Maven 3.8+ instalado
  • IDE (IntelliJ, Eclipse, VS Code) — opcional, mas recomendado
  • Banco de Dados Oracle configurado

⚙️ Configuração do Banco de Dados

Antes de rodar a aplicação, configure sua conexão com o banco de dados, colocando seu usuario e senha do banco de dados Oracle no arquivo:

src/main/resources/application.properties

Rodando o projeto

# Clone o repositório
git clone https://github.com/Leonardo-dev-br/heimdall-java.git
# Acesse o diretório
cd heimdall-java
# Compile o projeto
mvn clean install
# Rode a aplicação
mvn spring-boot:run

A API estará disponível em:

http://localhost:8080

Integrantes

Nome Completo RM
Pedro Henrique Lima Santos 558243
Vitor Gomes Martins 558244
Leonardo Pimentel Santos 557541

About

Repositório destinado a API WEB para o SaaS de Mapeamento e Organização de Pátio Mottu

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /