Welcome to rePOSe, an open-source Point-Of-Sale software system.
rePOSe was originally designed for the Rogue Carrot Natural Grocery store in Alfred NY. We had considered other commercial options, but none of them were quite what we wanted. The Rogue Carrot (I'll abreviate this to TRC) is a small grocery store that dabbles in consignment, in a small village, and TRC just doesn't need all of the bells and whistles offered by the popular commerial and enterprise systems.
The goals of the rePOSe project are and were:
sudo apt update
sudo apt full-upgrade
sudo apt-get install apache2 apache2-dev python3-dev python-pip \
python-imaging python-imaging-tk samba \
samba-common-bin postgres
sudo a2enmod cgi
pip install python-escpos
chown -R pi:www-data /usr/lib/cgi-bin
chown -R pi:www-data /var/www
chmod -R 775 /usr/lib/cgi-bin
chmod -R 775 /var/www
adduser pi www-data
adduser pi dialout
adduser www-data dialout
cd /
git clone https://github.com/Zeda/rePOSe.git
sudo nano /etc/apache2/sites-available/000-default.conf
SriptAlias pos /rePOSe/cgi-bin
Assuming all of the software is installed on the Raspberry Pi's SD card, then insert the SD card into the Pi. Attach the Ethernet cord to the Raspberry Pi, and the other end to the router. Note that the router will have a special port usually of a different color from the others-- don't use this one; that one is for connecting to the modem in case you want to connect to the internet.
Power on the the Raspberry Pi (just plug it in) and router (plug it in, and it might need you to press a button depending on your router), and the computer or tablet. The Pi will probably take 15-30 seconds to boot up, so in the meantime connect to your router's WiFi on your computer or tablet, and open your favorite browser (i.e. Chrome, Firefox, Edge, Internet Explorer, etc.). Now in the URL bar type: http://192.168.0.10 or try http://repose.local (not all devices support the latter format). If the Pi has been booted up, then this page should show you the rePOSe homepage. NOTE: These URLs will only work when you are on the same network as the rePOSe server (the Raspberry Pi in this case). If you are at home, you won't be able to access rePOSe unless the router that the Pi is connected to is also connected to the internet, and you know the router's IP address. I personally don't recommend this because it puts your server at a higher risk of hacking.
If you have a Bluetooth barcode scanner, then turn on Bluetooth on your computer/tablet, and connect to the scanner. For this, you'll need to consult the scanner's manual as they all have their own unique setup.
If you have a USB thermal printer, connect it to one of the Raspberry Pi's USB ports.
If you have a cash drawer, then connect the drawer to the thermal printer.
Open the home page: http://192.168.0.10 or try http://repose.local (not all devices support the latter format).
(This is a technical section and will use technical jargon.)
JavaScript (JS) is generally required for the rePOSe web frontend. This page is one exception since it is a static page, but for areas of the site like the register or inventory, it uses JavaScript heavily.
For the most part, the JavaScript is used to open a WebSocket connection to the server, and then keep it open (reconnecting if a disconnect happens). The advantage of using the WebSocket connection is two-fold. First, it uses less bandwidth to get the job done (the HTTP protocol is bulky at best). I come from a background of programming on hardware from the 70s and 80s-- I like to keep it simple and efficient when I can. Secondly (and more importantly), the WebSocket server can provide real-time data as a "conversation" between the server and client as opposed to an AJAX request+repsonse "interrogation."
In the original POS used at TRC, I used AJAX calls, and that worked, but it was clunky. One important issue is when we had a customer-facing screen that needed to be updated live. With AJAX, we needed to make frequent and bulky HTTP requests to the server to see if anything updated, and then it would get a response and update the screen. With WebSockets, we can send data from the client (register frontend), then the server does something, and then sends out the new data to all of the relevant devices.
Depending on your technical experience, you might know that JavaScript, when put in the wrong hands, can be a security risk. Nowadays, browsers tend to be good at spotting malicious code, but some people turn off JavaScript altogether. Your instance of rePOSe only talks to its own servers. If your computer, device, or network has been hacked well enough, then a hacker could trick your device into sending data elsewhere.
Q: What kinds of data are collected by rePOSe?
A: Only data that you enter is collected and only stored within your
own rePOSe server. Furthermore, rePOSe doesn't send any of that data
anywhere that you don't tell it to. For example, you might have it
set up to automatically back up the database to a USB drive or
another server, but that is entirely your call.
Q: What does it mean that rePOSe is "Open Source"?
A: All of the code and design of the rePOSe POS is available for
anyone to peruse and use and modify their own copy. For example,
if you wanted to, you can download rePOSe and make modifications
to it specifically for your store (or you could give an
adventurous employee access to the server to do that).
Q: What are the ramifications of an Open Source POS?
A: Open-source software good in that has a lot of advantages over losed-source
software, but there are some disadvantages
Q: I found a bug/need help, what do I do !?
A: You can see if the issue was resolved or report bugs or issues
here.
For help, you can send me an email at
zedae.z80@gmail.com (I do
have a day job, though, so I might not be quick to respond).
Q: Ouch, do I have to enter all the product names and UPCs myself?
A: The rePOSe database is not populated with this information, so you
will have to enter in the product information. Luckily, many vendors
offer their customers a file with all of that info (CSV or Excel file,
you can open either file type in Excel or other spreadsheet programs).
One of our vendors actually offered us two files, one with ALL of their
items, whether we could get them or not, and one with just the products
that we ordered in the past year.
Because every vendor is different, you will probably need to modify the
layout of the spreadsheet and save it as a CSV and then upload it to the
rePOSe product import tool.