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-2023
On UNIX, you may need to make the Gradle Wrapper script executable
chmod +x gradlew
Build by running the assemble
Gradle task
./gradlew assemble
You can find the Jar file at server/build/libs/server-<version>.jar
Build by running the jibDockerBuild
or the jibBuildTar
./gradlew jibDockerBuild
# or
./gradlew jibBuildTar
With 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.