BarSystem
Project: BarSystem | |
---|---|
Featured: | No |
State | Stalled |
Members | Multiple |
GitHub | No GitHub project defined. Add your project here. |
Description | Building our own BarSystem |
Picture | |
Contents
synopsis
Replace the existing (shell script) bar system with a more future proof and maintainable system that apart from letting users having an account, also helping us with inventory management and cash audits.
design
Wild ideas and suggestions on the discussion page
hardware
- M: cheap and disposable system hardware, like a Raspberry PI
- M: barcode scanner (for products, automatic user login and/or administrative assistance)
- M: keyboard input (for user login, administrative tasks)
- S: multilingual (en/nl at least, de optional)
- S: iButton reader (for secure automatic user login and/or administrative tasks)
- C: touchscreen (for ease of use)
- W:
database and backend
- M: able to do transactions without having a registered username with ACKbar credit
- M: able to make backups (and restores) easily
- M: json API for at least the basic functions
- S: able to generate reports (sold products, inventory, cash)
- aes256cbc has been working on the database part, and will take care of the rest of the backend (in php), with a json formatted API.
MySQL workbench database design, and generated SQL
frontend
- M: Scan a product and buy it
- S: administrative: add/edit/remove products
- S: possibility for (automated) inventory and cash audits
- Stuiterveer will take care of the frontend, including localization
current (old) system
We want to have less change hassle with snacks and drinks consumption: People generally pay for a single item with a 5 or 10 euro note which quickly leads to the amount of change being low.
- The first version was mainly written in bash (and a bit of perl + x86 binaries) by Prodigity for an HP ePC C10 running OpenBSD.
- Since the hard disk slowly turned into an angle grinder, xopr ported the system to a Raspberry Pi running FreeBSD, replacing the incompatible x86 binaries with shell scripts on its own.
- preparation has been done to connect the bar to a livestock mechanism (via the SpaceAPI), but is not added to the current script.
- It recently got an upgrade to make remote transaction possible (note that it is still a single-user backend: before logging in, it checks if someone else is logged in).
- Also, efforts have been done to connect the Paypal REST API, but the code examples are a POS and xopr is not going to add a megabyte of rubbish to build with composer just to top up one's account with a Euro or two. It ought to be simple: secure login, verify transaction, handle successful callback, top-up local database..
Currently, it is possible to start ./finarbar.sh
with an optional parameter: a serial device where the barcode scanner is attached to.
Use a non-existant dummy file to force keyboard-only input
ACKbar is connected to fuse group B.
Functional Design
Must have
- barcode scanning
- add products
- deposit money
- account
- keyboard input
- cancel any operation
- admin functions
- cud functions
Should have
- touchscreen
- voorraadbeheer
- kasbeheer
Could have
- names with spaces
- tab completion
- multi-language
Wont have
- Internet connection
Flowchart
Location: slACKspace