Skip to content

Latest commit

 

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Menu of the Week

A Spring Boot web application for managing dishes and ingredients, generating weekly menus, creating shopping lists, and managing dish orders.

The application was developed as a team project and demonstrates the use of Java, Spring Boot, Spring MVC, Spring Data JPA, Thymeleaf and MySQL in a complete web application.

Features

Dish Management

  • Create new dishes
  • Edit existing dishes
  • Delete dishes
  • Search and browse dishes
  • Like dishes
  • Add dishes to an order
  • View and remove ordered dishes

Weekly Menu Generation

The application can generate weekly menus containing seven dishes using different criteria:

  • Random Menu – generates seven randomly selected dishes
  • Vegetarian Menu – generates seven vegetarian dishes
  • Non-Vegetarian Menu – generates seven non-vegetarian dishes
  • Popular Menu – selects seven dishes based on the number of likes

The application checks that enough suitable dishes are available before generating a menu.

Ingredients and Shopping Lists

  • Manage ingredients associated with dishes
  • Generate a shopping list based on selected dishes
  • Handle ingredient quantities when creating the shopping list

Ordering

Dishes can be added to an order after they have been created.

The application keeps track of the ordering state of each dish and allows users to view and remove ordered dishes.

Tech Stack

  • Java 11
  • Spring Boot 2.6.5
  • Spring MVC
  • Spring Data JPA
  • Thymeleaf
  • MySQL
  • Maven
  • Bootstrap 5
  • WebJars
  • Apache Commons Collections

Architecture

The project follows a layered structure with separation between different parts of the application:

  • Controller – handles HTTP requests and interaction with the views
  • Service – contains application and business logic
  • DAO / Repository – handles database access
  • Model – contains the application's entities
  • DTO – transfers data used by menu and shopping-list functionality
  • Templates – Thymeleaf views used to render the user interface

My Contribution

This application was developed as a team project. I contributed to several of the application's core features, including:

  • Creating dishes
  • Editing and deleting dishes
  • Implementing functionality for liking dishes
  • Developing functionality related to weekly menu generation
  • Contributing to the dish ordering functionality

One of my specific contributions was introducing the idea of an isOrdered boolean field in the Dish entity.

A newly created dish has an ordering state of false. When a user chooses to order the dish, the state is changed to true. This allows the application to keep track of which dishes have been ordered and to display and manage them separately.

Working on the project gave me practical experience with developing a Spring Boot application in a team environment and working with controllers, services, repositories, entities, relational data and server-side rendered views.

About

Spring Boot web application for managing dishes, generating weekly menus, shopping lists and dish orders.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages