This application will demonstrate example of proper architecture of Vaadin application based on the following patterns and best practices:
- separation of concerns (server and client side of the application should be explicitly decoupled)
 - DRY
 - standard Java EE features like JSR-330 (Dependency Injection) and many others.
 
- Intellij IDEA or Eclipse EE
 - Oracle JDK 1.8.X
 - Maven 3.6.3
 
Please go through Contribution Guide
For Intellij IDEA:
- navigate to the Preferences | Build, Execution, Deployment | Compiler | Annotation Processors and turn on 
Enable Annotation Processing - navigate to the Preferences | Plugins, open the Marketplace tab, install Lombok Plugin by Michail Plushnikov
 
mvn install
Type mvn package tomee:run from project root or webapp module and then navigate to http://localhost:8080.
We need to keep coverage of all logic by Unit tests between above 80%. We don't need to add Unit tests for Vaadin UI classes, such as Views and others.
By example of PostgreSqlDbTest.class, you can see how we can use testcontainers and docker for integration testing.
https://travis-ci.com/rednavis/vaadin-showcase
mvn clean install -Pintegration-tests - run integration-tests
mvn package -Pproduction - run in production mode
mvn checkstyle:checkstyle - run checkstyle