@@ -20,8 +20,90 @@ A Spring Boot application for tracking flight events.
2020
2121### Prerequisites
2222
23- - JDK 21
24- - Maven 3.8+
23+ - Java 21
24+ - Maven 3.9.6
25+ - Docker and Docker Compose
26+
27+ ### External Dependencies
28+
29+ The application requires the following external services:
30+
31+ - Redis 7.4
32+ - PostgreSQL 17
33+ - Apache Kafka 4
34+
35+ #### Using Docker Compose
36+
37+ The project includes a ` docker-compose.yml ` file that sets up all required services. To manage the services:
38+
39+ ``` bash
40+ # Start all services
41+ docker-compose up -d
42+
43+ # Stop all services
44+ docker-compose down
45+
46+ # View logs for all services
47+ docker-compose logs -f
48+
49+ # View logs for a specific service
50+ docker-compose logs -f redis
51+ docker-compose logs -f postgres
52+ docker-compose logs -f kafka
53+
54+ # Restart a specific service
55+ docker-compose restart redis
56+ docker-compose restart postgres
57+ docker-compose restart kafka
58+
59+ # Stop and remove all containers and volumes
60+ docker-compose down -v
61+ ```
62+
63+ #### Service Details
64+
65+ - ** Redis**
66+ - Port: 6379
67+ - No authentication required
68+ - Data persistence enabled
69+
70+ - ** PostgreSQL**
71+ - Port: 5432
72+ - Database: flighttracker
73+ - Username: flighttracker
74+ - Password: flighttracker
75+ - Schema: flighttracker
76+
77+ - ** Kafka**
78+ - Port: 9092
79+ - Auto topic creation enabled
80+ - Single broker configuration
81+
82+ #### Manual Service Management
83+
84+ If you prefer to manage services individually:
85+
86+ ``` bash
87+ # Redis
88+ docker run -d --name redis -p 6379:6379 redis:7.4
89+
90+ # PostgreSQL
91+ docker run -d --name postgres \
92+ -e POSTGRES_USER=flighttracker \
93+ -e POSTGRES_PASSWORD=flighttracker \
94+ -e POSTGRES_DB=flighttracker \
95+ -p 5432:5432 \
96+ postgres:17
97+
98+ # Kafka
99+ docker run -d --name kafka \
100+ -p 9092:9092 \
101+ -e KAFKA_BROKER_ID=1 \
102+ -e KAFKA_LISTENERS=PLAINTEXT://:9092 \
103+ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
104+ -e KAFKA_AUTO_CREATE_TOPICS_ENABLE=true \
105+ apache/kafka:4
106+ ```
25107
26108### Cloning the Repository
27109
@@ -63,41 +145,58 @@ To enable automatic badge updates and coverage reports, ensure the following Git
63145## Project Structure
64146
65147```
66- src/
67- ├── main/
68- │ ├── java/
69- │ │ └── dev/
70- │ │ └── luismachadoreis/
71- │ │ └── flighttracker/
72- │ │ └── server/
73- │ │ ├── api/
74- │ │ │ └── PingController.java
75- │ │ ├── application/
76- │ │ │ ├── dto/
77- │ │ │ │ └── PingDTO.java
78- │ │ │ └── PingService.java
79- │ │ ├── domain/
80- │ │ │ ├── event/
81- │ │ │ │ └── PingCreated.java
82- │ │ │ ├── Ping.java
83- │ │ │ └── PingRepository.java
84- │ │ ├── infrastructure/
85- │ │ │ ├── event/
86- │ │ │ │ ├── FlightDataSubscriber.java
87- │ │ │ │ ├── PingEventPublisher.java
88- │ │ │ │ └── PingEventSubscriber.java
89- │ │ │ ├── kafka/
90- │ │ │ └── repository/
91- │ │ └── FlightTrackerApplication.java
92- │ └── resources/
93- │ └── application.yml
94- └── test/
95- └── java/
96- └── dev/
97- └── luismachadoreis/
98- └── flighttracker/
99- └── server/
100- └── FlightTrackerApplicationTests.java
148+ .
149+ ├── .github/
150+ │ └── workflows/
151+ │ └── maven.yml
152+ ├── src/
153+ │ ├── main/
154+ │ │ ├── java/
155+ │ │ │ └── dev/
156+ │ │ │ └── luismachadoreis/
157+ │ │ │ └── flighttracker/
158+ │ │ │ └── server/
159+ │ │ │ ├── api/
160+ │ │ │ │ └── PingController.java
161+ │ │ │ ├── application/
162+ │ │ │ │ ├── dto/
163+ │ │ │ │ │ └── PingDTO.java
164+ │ │ │ │ └── PingService.java
165+ │ │ │ ├── domain/
166+ │ │ │ │ ├── event/
167+ │ │ │ │ │ └── PingCreated.java
168+ │ │ │ │ ├── Ping.java
169+ │ │ │ │ └── PingRepository.java
170+ │ │ │ ├── infrastructure/
171+ │ │ │ │ ├── event/
172+ │ │ │ │ │ ├── FlightDataSubscriber.java
173+ │ │ │ │ │ ├── PingEventPublisher.java
174+ │ │ │ │ │ └── PingEventSubscriber.java
175+ │ │ │ │ ├── kafka/
176+ │ │ │ │ │ ├── FlightDataConsumer.java
177+ │ │ │ │ │ └── KafkaConfig.java
178+ │ │ │ │ └── repository/
179+ │ │ │ │ └── JpaPingRepository.java
180+ │ │ │ └── FlightTrackerApplication.java
181+ │ │ └── resources/
182+ │ │ └── application.yml
183+ │ └── test/
184+ │ └── java/
185+ │ └── dev/
186+ │ └── luismachadoreis/
187+ │ └── flighttracker/
188+ │ └── server/
189+ │ └── FlightTrackerApplicationTests.java
190+ ├── badges/
191+ │ ├── jacoco.svg
192+ │ └── branches.svg
193+ ├── db/
194+ │ └── init-scripts/
195+ │ └── 01-init.sql
196+ ├── docker-compose.yml
197+ ├── LICENSE.md
198+ ├── pom.xml
199+ └── README.md
101200```
102201
103202## License
0 commit comments