This project is implemented in Java using some Clean Architecture principles (entities / use cases / presenters) to garantee a good separation of the logical part and also to have a more organised and testable code.
Besides this, I followed the programming practice TDD to make refactoring and maintenance easier, and also to cover all the logical part with tests.
I used JUnit 5 to create tests and Maven as dependency manager