Spring Advanced Individual Project Assignment This is the Individual Project Assignment for the Spring Advanced 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/components). 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.
• Use Thymeleaf template engine or make the Front-End using JavaScript, consuming REST services from a Web API. • Use MySQL / Oracle / PostgreSQL / MariaDB 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 manageable 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). o When validation data, show appropriate messages to user
• Use at least 2 Interceptors/Filters. • 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 another mapping library.
-
Online Project Defense Each student will have to deliver an online defense of its work in front of a trainer jury. Students will have only 20 minutes for the following: • Demonstrate how the application works (very shortly). • Show the source code and explain how it works. • Answer the jury's questions Please be strict in timing! On the 20th minute you will be interrupted! Be well prepared for presenting maximum of your work for minimum time.
-
Assessment Criteria General Requirements – 70% • Functionality – 0…20 • Implementing controllers correctly (controllers should only do their work) – 0...5 • Implementing views correctly (using display and editor templates) – 0…5 • Testing (unit test and integration tests for some of the controllers using mocking) – 0…10 • Security (prevent SQL injection, XSS, CSRF, parameter tampering, etc.) – 0…5 • Data validation (validation in the models and input models) – 0…10 • Using model mapper and inversion of control – 0…5 • Using layers with multiple layouts – 0…10 • Code quality (well-structured code, following the MVC pattern, following SOLID principles, etc.) – 0…10 Answering Questions – 30 % Answer questions about potential functionality outside the scope of the project. Bonuses – up to 15 % • Use Spring Event somewhere in your application. • Implement one or more Advice (AOP). • Implement HATEOAS. • Using Spring WebFlux. • Using Angular/React/Vue for Front-End • Host the application in a cloud environment. • Use a file storage cloud API, e.g. Cloudinary, Dropbox, Google Drive or other for storing the files. • Use of features like Local Storage, SVG, Canvas, etc. • Implement Microservice architecture in your application. • Anything that is not described in the assignment is a bonus if it has some practical use.
-
Submission Deadline • You must submit your project on the course page before 23:59 on the 5th of August using a survey that will show up on your course page on the 1st of August. • A presentation schedule will be available on the 7th and will include only the projects that were submitted beforehand. Non-submitted projects will NOT be evaluated.
-
Additional Requirements • Follow the best practices for Object Oriented design and high-quality code for the Web application: o Use data encapsulation. o Use exception handling properly. o Use inheritance, abstraction and polymorphism properly. o Follow the principles of strong cohesion and loose coupling. o Correctly format and structure your code, name your identifiers and make the code readable. o Follow the concept of thin controllers.
• Well looking user interface (UI). • Good user experience (UX). • Use a source control system by choice, e.g. GitHub, BitBucket. o Submit a link to your public source code repository.