# Quarkus Framework Project
## Project Background
###### Pre-Requisite: [Introduction to Play 2.5](/DTWKk_JATk-0rm6ClED08Q), [Introduction to Quarkus](/xSbuep1OR6-NQoIAS_sJoA)
Currently, all Java applications in Ninja Van are built using the [Play 2.5 Framework](https://www.playframework.com/documentation/2.5.x/). However, due to increasing usage of the applications, we need to migrate to another framework that is more scalable and stable.
Specifically for Script Engine, a crucial part of the requirement is polyglot programming (running js on Java).
Critical endpoint: the endpoint that runs js on Java.
Graal XX, anything to do with the scripts.
## Current Stack (Must-haves in the new stack)
###### Source: [NV Tech Stack](https://confluence.ninjavan.co/display/NVE/Technology+stack+overview)
* Artifact Repository: Nexus
* Cache: Hazelcast, Redis
* ORM: Hibernate
* Build tool: ==sbt==
* Message Queuing : Kafka
* Container Orchestration: K8s
* Testing: Mockito
## Additional Requirements
* Documentation: OpenAPI + Swagger
## Technical Challenges
* Quarkus currently only supports Maven and Gradle (no sbt).
* [Quarkus plugins](https://plugins.jetbrains.com/plugin/13234-quarkus-tools/) are available on IntelliJ IDEA Ultimate 2018.3+ (latest is 2019.3+).
Currently, license is provided for 2018.1.
## New Stack:
* Artifact Repository: Nexus
* Cache: Hazelcast, Redis
* ORM: Hibernate
* Build tool: ==Maven==
* Message Queuing : Kafka
* Container Orchestration: K8s, Jib
* Testing: Mockito
* Documentation: OpenAPI + Swagger
## Quarkus Script Engine
* Here is the copy of [Confluence document](/dSljYhliSJmDZHCbWFWoFg)