Cheesy Pizzy
A menu, basket and self-order kiosk for a pizza place, with a 3D builder where you squeeze the sauce, throw on toppings, split the pizza in halves and bake it in front of you.
A menu and ordering site for a pizza place, made to work on a phone and on a self-order kiosk in the shop. You can pick from the menu, or build your own pizza in 3D and watch it go into the oven.
The menu
Two dozen ready pizzas, plus sides and drinks, each with its own price for every size. A random pizza from the menu slowly turns on the welcome screen. Pick a size, add to the basket, choose pickup or delivery to an address, and send the order. You get a short code and a page that shows where your order is: new, being prepared, on the way or ready, and handed over.
Build your own
This is the part I had the most fun with. The pizza sits in an open, branded box on a table, drawn live with three.js:
- Choose the size and the dough: classic, thin, thick or cheese stuffed crust.
- Tap a bottle to squeeze the sauce on.
- Tap a tub to throw a topping on. Tap it again for another portion.
- Want two pizzas in one? Pick the left or right half first. A topping on only one half costs half the price.
- Press “Put it in the oven” and the dough and toppings bake in front of you, then the lid closes.
The dough, cheese, sausage slices and leaves are all generated in code, with their own textures and lighting, so the pizza looks like food and not like flat stickers. A phone without WebGL gets a flat 2D version of the same builder.
Behind it
The browser shows prices, but the server never trusts them. Every order is priced again on the server from the database, and orders are rate limited. From the admin panel the shop runs everything: sizes and their prices, every topping and how many pieces of it land on a pizza, ready recipes, the delivery fee, and a switch to stop taking orders with a message for customers.
Built with Django and three.js. The interface is in Azerbaijani. The source code is private.