Shawn Osborne
Software Developer

Image of pizza slice

Restaurant Point of Sale & Inventory Management Application Walkthrough

Associated categories:


Updated 22 days ago

Overview

For the capstone project of my Bachelor's program, I was tasked with creating software to enhance the efficiency a growing business. I chose to build a fictional, family-owned pizza shop that was looking to expand it's operations. They were currently using manual paper forms and call based ordering, which took too long, was highly inefficient, and error prone. I decided they needed to streamline their inventory management process and automate order handling.

What I built was this full-stack MVC application that features a reactive customer flow for ordering from a managed menu, a live fulfillment dashboard for employees to view orders as they come in real-time with Server-Sent Events, and data-driven tools for management to track inventory, modify the menu, and view orders and inventory usage over specified time periods.

Technologies Used

  • Backend: Java, Spring Boot, JPA/Hibernate, Thymeleaf
  • Frontend: Vanilla JavaScript, CSS
  • Database: MySQL, H2 (for tests)
  • Infrastructure: Docker, Docker Compose, AWS
  • Other: Model View Controller, Server Sent Events

Video Walkthrough

I have also created a more in-depth explanation showing the application function in real-time. It is my recommended way to view this project as the video was made with the project fresh in my mind. You can view that here.

Download, Install, & Run

Docker and Docker Compose are the only requirements beyond the actual project files.

Docker Desktop - Windows/Mac/Linux

  • Download and install Docker Desktop for your operating system.
  • WSL2 may be needed (Windows Subsystem for Linux) if the installer prompts to install or update, click through that prompt.
  • After installation, you may need to reboot the PC and relaunch Docker Desktop.

Docker + Docker Compose - Linux

Change out the package manager for the one your distribution uses.

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER && newgrp docker

Running the Application

  • Navigate to the directory where the application is located (unzip it if you have the zipped package).
  • Within the /pizzashop directory you should see Dockerfile and docker-compose.yml files among others.
  • For the first run, open the command prompt or terminal from this directory and run docker compose up --build.
  • You may just run docker compose up after the first run.
  • This will do everything needed to build and run the application and database.
  • After the log shows "database initialized", the application will be running on localhost:8080.
  • The default admin login is (user: pizzashop, password: application_admin_password)
  • Password can be modified within the docker-compose.yml file under INITIAL_ADMIN_PASS.
  • To stop the application, hit CTRL + C, run docker compose down from the project folder, or click the stop icon in the Docker Desktop "containers" tab.

Interface By Role

The UI design was inspired by the look of traditional Italian restaurant menus.

All Users

All users are able to view and use the landing page and the menu as well as add to their cart without an account or being logged in.

Landing Page

pizza shop landing page

Menu Page

pizza shop menu page

Custom Pizza View

pizza shop custom pizza form

Cart View

pizza shop cart view

Customer

Completing an order requires the user be registered and authenticated, which is done through a validated form.

Registration Form

pizza shop receipt page

Once the user has logged in, they can submit their cart, which redirects them to the receipt page.

Receipt View

pizza shop receipt page

Employee

Users assigned the EMPLOYEE role are able to view and use everything a customer can with the addition of the “Stream Orders” page. This page allows the employee to connect to the SSE connection to stream incoming orders over HTTP. For each order a card is shown with items ordered, customer details, and recipes can be opened for each item.

Order Fulfillment Page

pizza shop stream orders page

Recipe View For Order

pizza shop stream orders page with recipe view

Management

Users assigned the MANAGER role are able to see and use the entire application’s functionality. They have an additional section called "Admin Portal", allowing them to view and modify inventory items, menu prices and ingredients, and user information. They also are able to generate reports for inventory used, orders placed, and orders fulfilled over a specified time period and for specific employees. Allowing managers to make informed decisions while maintaining inventory levels and understanding menu item popularity.

Admin Portal Page

pizza shop admin portal page

Inventory Management Page

pizza shop inventory management page

Please to comment.

Login

No account?

Comments