This began as a contract job to create an online ordering page for school lunch orders.
I used Angular on the front-end, served by Nginx as a static single-page app, with REST APIs to submit the order and process payment.
Later, the site was re-designed by a 3rd-party designer. The new landing page uses jQuery.
School lunches are ordered for the next school day, and orders close early in the morning. To avoid mistakes, the booking day comes from the server at the time the order begins, along with a unique token for placing the order.
The site is designed for mobile and desktop. Because mobile networks (especially) have intermittent failures, the front-end automatically retries requests. This requires requests to be idempotent. If the place-order request reaches the server twice, the second request will resume the payment process.
The order is confirmed when PayPal instant-payment is completed back on the site. This process is also safe to resume or retry.
After lunch orders close for the day, the server generates a daily order summary (CSV) and emails it through to the office. It also generates lists for the kitchen and delivery slips for each school.
The back-office automation has saved staff lot of time, and helps to avoid costly mistakes!