Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emirtotic/aviation-app
Aviation App
https://github.com/emirtotic/aviation-app
cache caffeine docker eureka flyway hibernate integrations jasperreports kafka mapstruct microservices mongodb mysql spring-boot
Last synced: about 2 months ago
JSON representation
Aviation App
- Host: GitHub
- URL: https://github.com/emirtotic/aviation-app
- Owner: emirtotic
- Created: 2024-10-20T17:45:40.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-11-04T13:27:48.000Z (2 months ago)
- Last Synced: 2024-11-04T14:25:52.560Z (2 months ago)
- Topics: cache, caffeine, docker, eureka, flyway, hibernate, integrations, jasperreports, kafka, mapstruct, microservices, mongodb, mysql, spring-boot
- Language: Java
- Homepage:
- Size: 159 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.md
Awesome Lists containing this project
README
Flight Management System
This project is a microservice application for managing flight data, including details on aircraft, airports, airlines, and historical aviation events for a specific date. It uses modern Java backend technologies to offer high flexibility and scalability.
Technologies and Skills Applied
-
Java 17: The primary programming language for implementing all services. -
Spring Boot 2.7.4: The backbone of the microservice architecture with supporting modules:
-
Spring Data JPA for working with the MySQL database. -
Spring Web for creating RESTful API endpoints.
-
-
MySQL and MongoDB: MySQL is used for storing data about aircraft and companies, while MongoDB stores airport information. -
Kafka: Asynchronous communication between services for exchanging data across different microservices (flight-service, airport-service, plane-service, company-service, and aviation-events-service). -
Eureka Server: For registering and discovering microservices. -
Spring Cloud Gateway: Gateway server for centralized management of access to various services. -
MapStruct: Used for object mapping within the code. -
Flyway: Used for initializing data in the MySQL database at application startup. -
Swagger (Springfox and Springdoc): API documentation for each microservice. -
Unit Testing: JUnit 5 was used for test management, and Mockito was used for mocking dependencies. -
Jsoup: Used for parsing HTML content and extracting historical events for a given date. -
Jackson: For JSON data serialization and deserialization, with additional@JsonFormat
configurations for date formats. -
Email: Mailtrap is used for testing email functionality. Inbox link: https://mailtrap.io/inboxes/3047360/messages/4541834293 -
Lombok: Reduces boilerplate code in DTO classes by automatically generating getters and setters.
Microservice Structure
-
Plane Service: Collects and stores information about aircraft, including average plane speed, in a MySQL database. -
Airport Service: Contains airport information, implemented with MongoDB, and allows for country-based searching. Data is integrated from an existing third-party API. -
Company Service: Stores details about airlines and uses MySQL. It communicates asynchronously with the plane service to retrieve the company fleet’s aircraft. -
Flight Service: Manages flight data and includes asynchronous calls to aviation-event-service to fetch historical events on the flight date, plane-service for aircraft data, company-service for company data, airport-service for departure and arrival airport information, and report-service to generate a PDF report on the created flight. -
Aviation Event Service: Parses HTML from a specified website to obtain relevant aviation events for a particular date and sends information to a Kafka topic. -
Report Service: Asynchronously collects the necessary data from the flight-service to create a Jasper report for the desired flight.
Key Features
-
Asynchronous Communication: Utilizes Kafka for efficient data exchange between various microservices. -
Caffeine Cache: Optimizes performance and reduces database load. -
Data Validation: Implemented format validation for dates in the FlightRequest DTO to prevent errors from incorrect dates. -
Logging and Monitoring: Through Slf4j logging and Spring Boot Actuator to monitor service status. -
Automated API Documentation: Swagger allows easy viewing and testing of all API endpoints. -
Reporting: Generates customized reports on flights using JasperReports, including details on passengers, aircraft, airlines, and relevant historical events.
Conclusion
This project is a robust example of a microservice application focusing on performance, scalability, and ease of maintenance. Using modern technologies and best practices, the application is built to work with complex aviation industry data and provides a stable foundation for further development and customization according to specific business needs.