Cook Easy is a web application for sharing a vast range of recipes. Its goal is to preserve traditional and not so traditional recipes and stimulate people's desire to consume more homemade food. It is clear from its name that cooking does not have to be difficult. In addition, the design is specifically made to be accessible, understandable and easy to navigate for the end user.
This is a web application that uses the following technologies, frameworks and development techniques:
-
It is implemented using Spring Framework.
-
It uses Thymeleaf template engine to create, process and display templates.
-
It uses MySQL relational database management system to store data that is necessary for the application in order to work properly.
- It uses Spring Data to access the information that is stored in the database.
- It uses database that follows the so-called Normal Forms up to 4NF.
-
It implements Responsive Web Page Design based on Bootstrap.
-
It uses the standard Spring Security to manage users and roles.
- User roles are manageable from the application.
- The role management is secured and error-safe.
- Registered users can have either a user role or an admin role, or both.
- Admins have the same permissions as the users but they can also edit users (make them admins or delete them), edit comments (approve them or archive them) and view statistics.
- Guest users can view index page, login and register page as well as about us page.
- Logged users can explore all the other functionalities of the app such as adding a new recipe, commenting a recipe, viewing their collections etc.
-
It has one REST Controller and therefore it uses JavaScript Fetch API to load and display data about comments on recipes.
-
It implements Error Handling and Data Validation both client-side (templates) and server-side (models and controllers) to avoid crashes when invalid input is enetered by the user. Consequently, appropriate messages are shown to the particular user.
-
It uses 2 interceptors - one for the statistics (visible only to admins) and one for the internationalisation implemented by the quote functionality.
-
It has 1 Scheduled Job used to delete archived comments on every 24 hours.
-
It uses ModelMapper mapping library.
-
It has Unit and Integration tests that cover around 60 % of its business logic.
Cook Easy follows the best practices for Object-Oriented design and high-quality code for the web application:
-
It uses data encapsulation.
-
It uses exception handling properly.
-
It uses inheritance, abstraction and polymorphism properly.
-
The code is correctly formatted and structured in order to be readable.
-
It has multiple layers: database layer, repository layer, service layer and web layer. Each of the above-mentioned layers interact with the layer below.
-
It follows the MVC pattern (Model-View-Controller pattern).
-
It follows the SOLID principles (Single-responsibility Principle, Open-closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle).
-
It follows the concept of thin controllers.