Design and implement a RESTful API (including data model and the backing implementation) for money transfers between accounts. Explicit requirements:
- You can use Java or Kotlin.
- Keep it simple and to the point (e.g. no need to implement any authentication).
- Assume the API is invoked by multiple systems and services on behalf of end users.
- You can use frameworks/libraries if you like (except Spring), but don't forget about requirement #2 and keep it simple and avoid heavy frameworks.
- The datastore should run in-memory for the sake of this test.
- The final result should be executable as a standalone program (should not require a pre-installed container/server).
- Demonstrate with tests that the API works as expected.
- The code produced by you is expected to be of high quality.
- There are no detailed requirements, use common sense.
- Java 11
- Micronaut (lightway DI AOT)
- Maven
- JUnit 5
- AssertJ
- A in-memory DB hand-writter for better control of concurrency
- Swagger for api documentation
- JDK 11 or newer
- Download the source code
- In root folder, execute "java -jar api.jar"
- The app is hosted on port 8888
- To see all endpoints and the API documentation go to: http://localhost:8888/api