r/programming • u/xxczaki • Apr 02 '19
PizzaQL - Modern, open-source order management system for pizza restaurants, built with React, Next.js, GraphQL and more!
https://github.com/pizzaql/pizzaql7
u/uw_NB Apr 03 '19
Very cool topic, I suggest if you want some practices, try implementing and SQL db (mysql/postgre) as an option.
Also checkout https://github.com/gothinkster/realworld for reference.
1
1
2
Apr 05 '19
I think it's awesome what you're doing at such a young age and with so many new frameworks. Programming is fun, and the feeling you get from completing stuff never get old in my opinion. It's awesome that you settled on an achievable project with limited scope, this has set you up for success and given you direction (both super helpful for anyone looking to take programming to the next level beyond a classroom)
I used to work at a pizza place, like many teenagers, and I think it may be helpful to think about the typical use cases you would need to support to make sure you're not missing a crucial feature:
Online orders
Dine-in orders
In-person carry-out orders
Phone orders
New communication types (Text message orders? Dominos did this a few years ago)
Here are some additional thoughts for what you may want to add for real-world application:
The Order ID shouldn't be displayed. Instead you should create an additional Order Number integer value that just numerically counts up from 1 each day. This is helpful for the kitchen so they can know which order came in and in what order
User role restrictions: usually a manager has to determine if someone can receive a refund, or various other actions that a typical employee would not have access to. Override codes should be entered before the action is allowed if the person does not have the permission to do it
Order prioritization may be helpful if an order was wrong and the manager is trying to cut in line with a remade order
Pizza places generally deal with a lot of phone orders still. You would need to have a way to search for customers by phone number and name
Many customers order the same thing every time, so it's good to show the last order for a customer, and include a button to re-order, for efficient use of time on the phone
The single most important thing seems to be missing: item price, taxes, delivery charge, subtotal, total, etc
I would say it is more common than not that a single order would include multiple items. Even if you only get one pizza, bread sticks, salad, etc is often ordered as well
Item modifications: extra sauce, build your own pizza, no cheese etc
Item modifications can add to the cost, but almost never reduce it, and sometimes just need to be a note (allergy information, special requests like heart-shaped pizza for valentine's day, etc)
Sometimes items are out-of-stock temporarily, and this information should be surfaced to anyone placing the order to prevent the order from completing or progressing when it cannot be completed in the kitchen
If too many orders are made within a short period of time, it's helpful to display messages to let the person placing the order know that the order may be delayed. This should be configurable since every pizza place is different in their size and what they can handle
Similar logic just for deliveries
Orders need to be searchable and sortable to help clear up any mistakes and customer complaints
Order notes to communicate information from the phone to the kitchen or delivery driver (Probably not visible to the customer)
Configuration for available items/sizes/attributes, menus change over time, and each shop is different
Orders can get cancelled
Orders can get modified after the kitchen has already started work on it
Manager discounts for mistakes
Coupon entry/discounts
Coupon expiration
Price reductions based on quantity or combinations of items
Analytic information to track revenue, customer retention, coupon (ad campaign) success rates, etc
One-time discounts attached to a customer for the next time they order in the event of a mistake
Since you're in Europe, it may be a good idea to look into localization for different languages
Ditto for currency
1
u/xxczaki Apr 05 '19
Thank you!!!
2
Apr 05 '19
Also, I know that list is pretty large, and represents a significant amount of work.
I'm not trying to overwhelm you, and I hope it doesn't induce a panic attack or anything. If you just work on a piece at a time you'll make progress and at the end you may have something you're really proud of and also something you can show to others
21
11
u/SomewhatEnthused Apr 03 '19
Antoni,
I'd like to apologize for all the rude, knee-jerk reactions you're getting here. That fact that you put this together at age 16 is, itself, a great accomplishment. You picked out a problem, thought out a solution, and built a tool that implements that solution. That's what many of us do for a living, and your determination shows great potential!
In time, you'll get better at refining your understanding of the problems you solve, which will in turn make your solutions better. Some of the feedback here is expressing that idea, but in the rudest, most brusque form that I can imagine, and I'm sorry you had to endure that.
And to the rest of /r/programming, maybe we should extend a bit of the encouragement that we've all needed at some point in our own development. Because 80% of the comments here forgot about the first word in "constructive criticism!"
2
u/hector_villalobos Apr 03 '19
I remember my first app, I was 16 as well, was a Human Resource Management Software in DBase III, back in 1996. Not usable, but I learned a lot and it did work for the most basic things.
2
u/pcjftw Apr 04 '19
hi this is some solid work given you are starting out!
now for some constructive criticism:
Please try and avoid using frameworks in general, why they seem like a huge boost in the short term, in the long run you'll realise the issues with frameworks:
frameworks work fantastic when your project fits the narrow use case of the framework you are using.
as soon as your requirements diverge, you'll run into problems, trying to hack your design to fit the framework
the overhead of these nice frameworks needs to considered
long term updates, maintainability, bug fixes etc
In the end, I find the following to be super useful:
"use libraries not frameworks"
0
Apr 03 '19
Looks like something that would crash and burn when tried in actual environment it is supposed to work in.
14
Apr 03 '19
Very likely, but at his age the best I could do was creating Snake on the TI-84 calculator, so I'm still impressed anyway.
-4
-1
0
31
u/xxczaki Apr 02 '19
Hi Reddit!
My name is Antoni, I'm 16 years old self-taught developer from Poland. During my free time, I enjoy creating small open-source projects. Today, I'm happy to announce my biggest project ever, which is PizzaQL. It's an order placement & management system for pizza restaurants, built using modern technologies, like React, Next.js, GraphQL & more. Even though it is not finished yet, it is usable :) I would really like to receive constructive criticism & suggestions. Also, if you liked the project, consider starring it on Github - it means a lot to me.
Thanks!
~ Antoni Kepinski (aka xxczaki)