API de parquímetro desenvolvida como parte do curso de pós-graduação em tecnologia na FIAP.
- Registro de veículos.
- Controle de tempo de estacionamento.
- Geração de relatórios de uso.
- Integração com banco de dados MongoDB.
- Monitoramento de logs com Elastic Stack (Elasticsearch, Logstash e Kibana).
- Documentação interativa com Swagger (OpenAPI).
Este projeto utiliza as seguintes tecnologias e ferramentas:
- Java 17: Linguagem de programação principal.
- Spring Boot: Framework para desenvolvimento de aplicações Java.
- MongoDB: Banco de dados NoSQL para armazenamento de dados.
- Elastic Stack:
- Elasticsearch: Armazenamento e pesquisa de logs e dados estruturados.
- Logstash: Pipeline de processamento de logs.
- Kibana: Visualização e análise de logs e métricas.
- Swagger (OpenAPI): Para geração de documentação interativa da API.
- Gradle: Ferramenta de automação para build e gerenciamento de dependências.
- Docker Compose: Para execução simplificada da aplicação e seus serviços.
Certifique-se de ter os seguintes itens instalados em sua máquina:
- Java 17+
- Docker e Docker Compose
- Gradle (opcional, caso prefira executar o projeto localmente)
- Certifique-se de que o Docker e o Docker Compose estão instalados e funcionando.
- No diretório raiz do projeto, execute o comando:
docker-compose up --build
- O Docker Compose iniciará os seguintes serviços:
- Aplicação Spring Boot
- MongoDB
- Elasticsearch
- Logstash
- Kibana
- Acesse os serviços:
- Aplicação: http://localhost:8080
- Logs no Kibana: http://localhost:5601/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(message),filters:!(),index:'16321dff-a7a2-475f-afd8-a69979a50a63',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
- Documentação Swagger: http://localhost:8080/swagger-ui/index.html
-
Clone o repositório para sua máquina local:
git clone https://github.com/vtarginoo/parkmongoapi.git
-
Acesse o diretório do projeto:
cd parkmongoapi -
Certifique-se de que o MongoDB, Elasticsearch, Logstash e Kibana estejam configurados e em execução localmente.
-
Configure as conexões e propriedades no arquivo
application.properties. -
Execute o projeto usando o Gradle:
./gradlew bootRun
-
Acesse os serviços:
- Aplicação: http://localhost:8080
- Logs no Kibana: http://localhost:5601/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(message),filters:!(),index:'16321dff-a7a2-475f-afd8-a69979a50a63',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
- Documentação Swagger: http://localhost:8080/swagger-ui/index.html
O projeto segue uma estrutura típica de aplicação Spring Boot:
- /src/main/java: Contém o código-fonte da aplicação.
- controller: Controladores responsáveis pelas APIs.
- service: Lógica de negócios.
- repository: Interface para interações com o banco de dados.
- model: Classes representando entidades de dados.
- /src/main/resources: Arquivos de configuração e propriedades.
application.properties: Configurações de ambiente.
O Elastic Stack é utilizado para o monitoramento e análise dos logs da aplicação:
- Logstash processa os logs da aplicação e os envia para o Elasticsearch.
- Elasticsearch armazena os logs e permite pesquisas rápidas.
- Kibana fornece uma interface visual para explorar e analisar os logs.
Acesse os logs diretamente no Kibana:
http://localhost:5601/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-15m,to:now))&_a=(columns:!(message),filters:!(),index:'16321dff-a7a2-475f-afd8-a69979a50a63',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))
A API conta com documentação interativa gerada pelo Swagger (OpenAPI).
Acesse a documentação em:
http://localhost:8080/swagger-ui/index.html
Contribuições são bem-vindas! Siga os passos abaixo para contribuir:
- Faça um fork do repositório.
- Crie um branch para sua feature ou correção de bug:
git checkout -b minha-feature
- Realize as alterações e faça commit:
git commit -m "Adiciona nova feature" - Envie suas alterações:
git push origin minha-feature
- Abra um Pull Request no GitHub.
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.