Architecture Kata "Pizza Online"

Develop an application that allows customers to order online from a pizza delivery service. However, the orders should only be printed out by the delivery service [1].

To order, the customer calls up the page with the pizza service's menu in the web browser. There he enters the order quantity (default: 0) for the pizzas he wants to order. Finally, the customer enters their name, address, telephone number and email address.

When the customer "submits" this data, a page with the summarized order details including the order number is displayed. Only when the customer confirms this page is the order transmitted to the pizza service and a receipt email sent to the customer.

If the customer is unhappy with the summary, they can go back to the menu. This is then pre-filled with his details so that he only has to correct what he doesn't like. For future orders, the customer's personal details are stored in a cookie after confirmation.

With the pizza service, the order is printed automatically upon receipt [2] and archived as an XML or Json file.

Data

The menu is a CSV file speisekarte.txt with associated product images. Its format:

NoDescriptionPriceSmallPriceMediumPriceLargePicture
1Tonno pizza5,606,507,80Tonno.jpg
2Pizza Salami5,406,207,40Salami.jpg
     

For each pizza there are prices for different pizza sizes. The pictures are in the same directory as the menu and have the names as shown in the last column.

Endnotes

[1] With a printout of the order, the online order fits seamlessly into the existing production process. Previously, the pizza service took orders by phone or at the till and passed them on to the kitchen as a receipt.

[2] Imagine a small thermal printer as used in cash registers or card insertion devices. However, a laser printer is of course also sufficient for the task.

en_USEnglish