Difference between revisions of "BarSystem"

From Hackerspace ACKspace
Jump to: navigation, search
(updated information (was fairly outdated on the whole))
m (added fuse group)
 
Line 53: Line 53:
 
Use a non-existant dummy file to force keyboard-only input
 
Use a non-existant dummy file to force keyboard-only input
  
 +
ACKbar is connected to fuse group [[Fuse group::B]].
 
==Functional Design==
 
==Functional Design==
 
'''Must have'''
 
'''Must have'''

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