Spring & Thymeleaf project
Java MVC Frameworks
Individual Project Assignment
This is the Individual Project Assignment for the Spring MVC Frameworks Course @ SoftUni.
General Requirements
Your Web application should use the following technologies, frameworks and development techniques:
• The application must be implemented using Spring Framework.
o The application must have at least 12 web pages (views).
o The application must have at least 5 independent entity models.
o The application must have at least 5 controllers.
o The application must have at least 5 services.
o The application must have at least 5 repositories.
o Optionally, you may use Spring Data REST.
• Use IntelliJ or Eclipse.
o Use Thymeleaf template engine for generating the UI.
Use fragments.
o You could also make the Front-End using JavaScript, consuming REST services from a Web API.
• Use MySQL / Oracle / PostgreSQL as a database.
• Use Spring Data to access your database.
o User Hibernate / EclipseLink or any other provider as a JPA implementation.
• Implement Responsive Web Page Design based on Bootstrap / Google Material Design.
• Use the standard Spring Security for managing users and roles.
o Your registered users should have at least these roles: user and administrator.
o User roles should be managable from the application.
o Make sure the role management is secured and error-safe.
• Use AJAX to asynchronously load and display data somewhere in your application.
• Write Unit Tests for your logic, services, repository query methods, helpers, etc.
o You should have at least 80% coverage on your business logic.
• Implement Error Handling and Data Validation to avoid crashes when invalid data is entered (both client-side and server-side).
• Handle correctly the special HTML characters and tags like
and <script> (escape special characters).
• Use at least 2 Interceptors.
• Run asynchronous tasks for jobs that do not need to run sequential or for jobs in the background.
• Schedule jobs that impact the whole application running e.g. once/twice a day.
• Use ModelМapper or other mapping library.