Difference between revisions of "BarSystem"

From Hackerspace ACKspace
Jump to: navigation, search
m (File to Media link (cleans text))
m (added fuse group)
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{Project
 
{{Project
|State=Active
+
|Featured=No
 +
|State=Stalled
 
|Members=Multiple
 
|Members=Multiple
 
|Description=Building our own BarSystem
 
|Description=Building our own BarSystem
 +
|Picture=Bar_flowchart.png
 
}}
 
}}
 
= synopsis =
 
= 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.  The current system is more than two years old, hard to do maintenance on, and recently, the disk is starting to transform into an angle grinder.
+
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 =
 
= design =
Line 26: Line 28:
  
 
* 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.
 
* 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.
[[Media:ACKbar.dia.tar|ACKbar.dia.tar]]
+
[[Media:Ackbar-160516.zip|MySQL workbench database design, and generated SQL]]
  
 
== frontend ==
 
== frontend ==
Line 37: Line 39:
 
* [[User:Xopr|Xopr]] is thinking of using html/javascript
 
* [[User:Xopr|Xopr]] is thinking of using html/javascript
  
 +
* [[User:Stuiterveer|Stuiterveer]] will take care of the frontend, including localization
  
 
= current (old) system =
 
= current (old) system =
We want to have less effort with the cash register. Currently we use a pay-direct system. People generally pay for a single item with a 5 or 10 euro note which quickly leads to the amount of change being low.  
+
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 general idea is to create a system where you can have an account and prepay for your stuff. Then use a barcode/touchscreen system to withdraw the prices from the account. This way we can reduce the need for the large amounts of change.
+
: The first version was mainly written in bash (and a bit of perl + x86 binaries) by [[User:Prodigity|Prodigity]] for an HP ePC C10 running OpenBSD.
 +
: Since the hard disk slowly turned into an angle grinder, [[User:Xopr|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 <abbr title="Piece Of Sh..">POS</abbr> and [[User:Xopr|xopr]] is not going to add a [[GitHub::https://github.com/paypal/PayPal-PHP-SDK|megabyte of rubbish]] to build with [https://getcomposer.org/ 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..
  
Also it would be nice to have less effort with counting the cash register and stock, which currently takes approx. 15 min per day.
+
Currently, it is possible to start <code>./finarbar.sh</code> 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
We could use one of the existing systems used by other spaces, but we feel we really should create our own version.
 
As of current there are 2 systems being developed. The first is in bash-shell , the second is in LOLcode http://lolcode.com/  
 
We have got a dedicated OpenBSD machine (HP ePC C10) with a barcode scanner and a touchscreen to make it as easy as pie to use this system. The barcode scanner is working, the touchscreen works but the touch based BarSystem isn't finished yet. Unfortunatly we haven't found any (proper) documentation yet :\
 
  
 +
ACKbar is connected to fuse group [[Fuse group::B]].
 
==Functional Design==
 
==Functional Design==
 
'''Must have'''
 
'''Must have'''
Line 75: Line 80:
 
'''Flowchart'''
 
'''Flowchart'''
 
[[File:Bar flowchart.png|center|Flowchart for the Bar System]]
 
[[File:Bar flowchart.png|center|Flowchart for the Bar System]]
 +
Location: [[Location::slACKspace]]

Latest revision as of 17:13, 16 January 2018

Project: BarSystem
Featured: No
State Stalled
Members Multiple
GitHub No GitHub project defined. Add your project here.
Description Building our own BarSystem
Picture
Bar flowchart.png

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


  • Prodigity is thinking of writing the frontend in Python
  • Xopr is thinking of using html/javascript
  • 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

Flowchart for the Bar System

Location: slACKspace