sinchen

SinChen

Application to order food and automatically be sent to a Thermal Point of Sale Receipt Printer.

Project

Description

This was a personal project that I created for the restaurant where I work. Originally, every employee had to take orders by writing them on paper and physically walking to the kitchen to communicate them. While there are many existing order-taking applications available, they can be quite expensive. So, I took it upon myself to develop an application that allows employees to conveniently take orders using multiple tablets. These orders are then sent to a Thermal POS Receipt Printer, eliminating the need for employees to waste time walking back and forth.

This project was primarily built using the MERN stack. I also implemented passport-jwt for user authorization and Higher-Order Components (HOC) for handling different roles within the user base. For example, employees were given the ability to take orders and view order history, while administrators had the additional capability to manage the items available for ordering

By far, the most challenging aspect of this project was establishing communication with the printers. I utilized a POS Printer from Star Micronics, but unfortunately, there were no available documentations. Additionally, I utilized an npm package called 'react-to-print' which had printing capabilities, but it was not specifically designed for POS printers. After investing numerous hours into tweaking and customizing my limited resources, I managed to make it work.

Tech Stack

MongoDB

Express.js

React.js

Node.js

Mongoose

Passport-jwt

ReactToPrint