Background of futuristic technology of components connected together with white text that reads, POS.

Building a Point of Sale System

  • Adam Douglas

Many months ago I suggested to a small struggling non-profit food co-op business that does not have a point of sales system (POS), that I could be the one to build the system as a volunteer. The co-op unfortunately is in a tough financial situation and cannot afford to purchase a commercial point of sales solution. A short time passed and after a few meetings the board of directors approved my adventurous idea along with a $5,000 for the cause. This was very exciting indeed for me as I enjoy jumping into a new challenge, especially one that could greatly impact the Co-op’s operations in a positive direction.

What is a Point of Sale?

A system used to handle and manage a retail transaction, by calculating the amount owed by the customer and then allows for the customer to make payment. Afterwards the customer may be issued a receipt.

Researching and Learning

I’ve spent a lot of time researching and learning what hardware would be required in a very proprietary industry. I found this part frustrating, as I believe this should be open industry that allows for freedom of choice. Either way I continued onward working on determining the point of sale software system to use, and choosing an operating system. Once decisions where made what was going to be purchased, I had to try and find businesses to purchase the hardware. Finding the solutions for everything was overwhelming to say the least. Thankfully I had some help with choosing and pricing out the hardware.

Purchase Hardware

The following hardware items have been purchased to build the system. A lot of the items were purchased online, but luckily I was able support a couple of local businesses in purchasing the remaining hardware.

Type Description Quantity
Case SilverStone Technology Computer Case SST-GD09B-C (black) 1
Case Fan Noctua NF-A8 80mm 2
Cash Drawer POS-X 16” ION Slide Cash Drawer 1
CPU AMD Ryzen 5 5500 - Ryzen 5 5000 series 6-Core Socket AM5 65W Desktop Processor 1
CPU Cooler Noctua NH-L9x65 CPU Cooler 1
Monitor Angel POS HD 17” Capacitive LED Backlit Multi-Touch Monitor, VGA & HDMI Input 1
Monitor Logic Controls LV4000U Pole Customer Display 1
Motherboard Asus Prime B550-Plus AM4 AMD B550 SATA 6GB/s USB 3.0 HDMI ATX AMD 1
Network Cable Amazon Basic RJ45 Cat-6 Ethernet Patch Internet Cable, 1.5 Meters (5 Foot) 5
Network Switch TP-Link TL-SG108, 8 Port Gigabit Unmanaged 1
Power Supply Corsair RMx series (2021) RM750x CP-9020199-NA 750 W ATX12V / EPS12V 80 Plus Gold Certified 1
Printer Epson TM-T20III Thermal Receipt Printer 1
Printer Paper Receipt Paper Rolls 3 1/8” X 200’ Thermal Roll 50
RAM Corsair Vengeance LPX 16GB (2 x 8GB) 288-Pin PC RAM DDR4 3200 (PC4 25600) 1
Scanner Adesso NuScan 3200U 1
Scanner Honeywell MS9500 Voyager series 1
Storage Samsung 980 M.2 2280 500GB, PCI-Express 3.0 x4, NVMe 1.4 V-NAND MLC 2
UPS APC Back-UPS Pro 1500VA Battery Backup 1
Weigh Scale Adapter USB to RS232 (serial) FTDI adapter 1


I’m gone with the following items to keep the system as minimal as possible while still using free open source software. Some may question, why are you using Docker than? Well this is one area of technology I’m still learning, and I’m unfortunately most familiar with Docker. We will see how things end, I may end up using Podman as long as it doesn’t hold me up. This system needs to be deployed as soon as possible.

Item Name
Container Docker to run Odoo Community
Operating System Alpine Linux
Point of Sale Odoo Community
Web Browser Chromium

Building The System

All the hardware has been received except for the uninterrupted power supply (UPS). The UPS will be coming shortly. Right now I’m working away on putting the system together. My hope is to have it done before Christmas. The entire process will be documented, so keep an eye out for more posts to come.

This is post 53 of 100, and is round 2 of the 100 Days To Offload challenge.

    • fix grammar
    • fix clarity
    • change topic
    • change 100DaysToOffload message