From 128878a2f16979b77f3ca22c29df047c4bc9787e Mon Sep 17 00:00:00 2001 From: TheJoeCoder <joe@radialbog9.uk> Date: Thu, 23 May 2024 22:38:01 +0100 Subject: [PATCH] [readme] add additional context to readme --- README.md | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a428072..fedc0a3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,44 @@ # PizzaPalace -GCSE Computer Science Challenge +## The Brief +Create an ordering system in Python for a restaurant named Pizza Palace. + +The user should be able to order from a list of pizzas, selecting the number of people for each pizza type. +They should also be able to select a stuffed crust option for each pizza, which will charge them an extra fee of £1.00. + +The pizzas which should be available are as follows: +| Pizza | Cost (p.p) | +| --------------- | ---------- | +| Margherita | £3.00 | +| Pepperoni | £3.00 | +| Hawaiian | £4.00 | +| Buffalo Chicken | £5.00 | +| Vegetable Feast | £4.00 | + +## My Approach +In principle, this system is quite easy to understand. The programming level required for the qualification is quite low - no real ordering infrastructure had to be created - and all that was needed was to loop through each pizza, prompt the user how many people and if they wanted stuffed crust, then calculate the cost and tell them how much it is. +However, I chose to give myself a challenge as I thought I'd probably complete that in about 10 minutes. + +I created: +- A GUI client application with Tkinter, for the user to interact with. +- A server, which has a list of the pizzas and their prices which is returned to the client, handles order carts, and then completes the orders by saving them to a database. +- An admin panel, which uses websockets to inform the user of new orders. +- The ability to call a webhook upon order (e.g. to notify Discord and mention a user). + +I did not, however, create a billing system. Let's assume it's cash on delivery for sake of simplicity. I suppose I could've used PayPal/Stripe/Dojo sandbox, but I didn't want to go through the hassle of setting up an account and creating credentials etc. This would be something that can be easily implemented. + +Here's the tech stack: +- **Client:** +- - Python +- - Tkinter +- **Server:** +- - Python +- - Flask +- - Pymongo/MongoDB database +- - flask_socketio +- **Admin Panel:** +- - Bulma CSS (because I'd never used it before) +- - JQuery +- - Socket.io ## Running the Server ``` -- GitLab