Map · you are at Projects

Record 001/0172022

Restaurant Order Management System

A web app for running restaurant orders: manage incoming orders, keep the menu live and take payment by QR code.

SpecSheet 001

Role
Sole developer
Year
2022
Language
JavaScript
Platform
Web
Reading
5 min
Stack
  • React
  • Redux
  • Immer
  • Node.js
  • Express
  • MongoDB
  • JWT
  • Docker
Restaurant Order Management System cover
Restaurant Order Management System cover

The problem

Restaurants juggle orders, a menu that changes through the day and payments, often on paper or across separate tools.

This app brings order management, a live menu and QR payment into one web application.

Decisions & trade-offs

3 decisions

  1. Start as one React app

    The live demo is the original single-page app: React and Redux on the front end, a Node and Express API with MongoDB behind it, JWT for authentication.

  2. Then split it into services

    In March 2022 the repository moved to a microservices layout: a TypeScript Express auth service backed by MongoDB, a shared npm package, a Next.js client, and Docker, Kubernetes and Skaffold for deployment. The auth service and shared package were built and tested; the rest of the migration was not finished.

  3. Share code through a package

    Error handling, request validation and the current-user and require-auth middleware live in a custom npm package, so every Express service reuses them instead of copying them.

The write-up

5 min read

What it does

  • Manage orders as they come in.

  • Live menu that can be changed while the restaurant is running.

  • QR payment so a table can pay without waiting for the bill.

Built with

A React and Redux front end (with Immer for state updates) talking to a Node and Express API backed by MongoDB. Requests are authenticated with JWT, and the services are packaged with Docker.

esc
↑↓ move ↵ open ⌘↵ new tab esc close37 indexed

rk@request · simulated terminal