Skip to content
This repository has been archived by the owner on Feb 11, 2023. It is now read-only.

My solution to Reaktor's Developer Trainee, summer 2023 pre-assignment

License

Notifications You must be signed in to change notification settings

ChargedByte/reaktor-summer-2023

Repository files navigation

Project Birdnest

My solution to Reaktor's Developer Trainee, summer 2023 pre-assignment.

Summary

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.

Technologies

  • Gradle: Build tool
  • RSocket: Reactive Streams Application protocol
  • Redis: In-memory data store

Client

  • Vue 3: JavaScript UI Framework
  • Vuetify: Material Design Component Framework
  • io-ts: Runtime I/O type system

Server

Deployment

Building

Requirements

  • Java Development Kit (JDK) 17+

Setup

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

JAR file

Build by running the assemble Gradle task

./gradlew assemble

You can find the Jar file at server/build/libs/server-<version>.jar

Docker container image

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.

OCI container image

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

License

This project is licensed under the MIT License.

About

My solution to Reaktor's Developer Trainee, summer 2023 pre-assignment

Resources

License

Stars

Watchers

Forks