My solution to Reaktor's Developer Trainee, summer 2023 pre-assignment.
The application consists of two parts, server (Back-end) and client (Front-end).
The server has scheduled a task that polls Reaktor's API every 2 seconds. It then determines the violating drones and drones that have violations within 10 minutes. Those violations get pushed to a Redis database with an expiry of 10 minutes. The Redis database will automatically drop the violations if they are not renewed within that 10 minutes.
The server also exposes a WebSocket-based RSocket endpoint that sends the client all saved violations and then sends events about violations added/updated or removed. These events are backed by Redis keyspace notifications that are converted to messages.
The client is a simple SPA that subscribes to the RSocket stream and display the information to the user.
- Vue 3: JavaScript UI Framework
- Vuetify: Material Design Component Framework
- io-ts: Runtime I/O type system
- Kotlin: Programming language
- Spring Boot 3: Spring application framework
- Project Reactor: Reactive programming library for Java
- Google Jib: Java container build tool
- "Distroless" Container Images: Minimal container base images
- Docker Compose: Multi-container orchestration tool
- Nginx Proxy Manager: Easy Nginx-based reverse proxy management
- Java Development Kit (JDK) 17+
Clone the repository to your desired location and enter the folder
git clone https://github.com/ChargedByte/reaktor-summer-2023.git && cd reaktor-summer-2023On UNIX, you may need to make the Gradle Wrapper script executable
chmod +x gradlewBuild by running the assemble Gradle task
./gradlew assembleYou can find the Jar file at server/build/libs/server-<version>.jar
Build by running the jibDockerBuild or the jibBuildTar
./gradlew jibDockerBuild
# or
./gradlew jibBuildTarWith jibDockerBuild the image is added to docker directory
If using jibBuildTar the image file is located at server/build/jib-image.tar and can be loaded
with docker load --input jib-image.tar.
Build by running the jibBuildTar with the `` argument
./gradlew jibBuildTar -Djib.container.format="OCI"You can find the image file located at server/build/jib-image.tar
This project is licensed under the MIT License.