summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md87
1 files changed, 87 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..aa6d2b6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,87 @@
+This is the Shop System of Oldenburg's Hackspace Mainframe.
+
+The software has been developed as a credit based system for members of the
+hackspace. The system depends on a cheap serial barcode scanner, which is used
+to establish user sessions (by scanning CODE39 based user codes) and buying
+products (by scanning their EAN). The members receive an invoice at the end of
+the month, which is also send to the hackspace's treasurer for further processing.
+
+Since the user barcodes do not contain any advanced authentication mechanism,
+security is established by sending daily mails in addition to the monthly
+invoice mail. The daily mail (which is only sent if something has been bought)
+lists all products bought by the member on this day and the current total sum
+for the month.
+
+The system provides the following features:
+ * time shifted daily mails (08:00-07:59 of the following day), so that there
+ is a lower chance of purchases from one visit being split over two mails.
+ * native rendering of PDF invoices using Cairo (fast & lightweight)
+ * invoice mails are sent using text/plain and text/html
+ * support for sending a database backup to a mail address
+ * curses based user interface
+ * basic audio support
+
+The system administration is done using a simple web interface, which provides
+support for the following tasks:
+ * adding information about new products
+ * restocking products
+ * changing selling prices of products
+ * updating the user database by importing a userlist.csv
+ (regularly generated by our treasurer)
+
+The system consists of multiple daemons written in Vala, which communicate
+with each other using DBus.
+
+=== Building ===
+
+ * Install dependencies listed by `dpkg-checkbuilddeps` via `apt install`
+ * Build the package with `dpkg-buildpackage -b`
+
+=== Install ===
+
+ * `apt install ./shopsystem.deb`
+
+=== Configuration ===
+
+ * Edit /etc/shopsystem/config.ini
+
+=== Database ===
+
+To use the web interface, you need add a super user first. Further
+user can then be imported using the web interface. Creation of the
+initial super user is done with the following commands:
+
+ * `busctl --system call io.mainframe.shopsystem.Database /io/mainframe/shopsystem/database io.mainframe.shopsystem.Database UserReplace "(issssssssxbbsas)" "<userid>" "<firstname>" "<lastname>" "<email>" "<gender>" "<street>" "<postcode>" "<city>" "" 0 0 0 "" 0`
+ * `busctl --system call io.mainframe.shopsystem.Database /io/mainframe/shopsystem/database io.mainframe.shopsystem.Database SetUserPassword "is" "<userid>" "<password>"`
+ * `busctl --system call io.mainframe.shopsystem.Database /io/mainframe/shopsystem/database io.mainframe.shopsystem.Database SetUserAuth "(ibbbb)" "<userid>" 1 1 1 1`
+
+Unfortunately the web interface does not yet allow do add categories
+or suppliers. You can use the following queries to add this before
+adding products:
+
+ * `busctl --system call io.mainframe.shopsystem.Database /io/mainframe/shopsystem/database io.mainframe.shopsystem.Database AddCategory "s" "Getränke"`
+ * `busctl --system call io.mainframe.shopsystem.Database /io/mainframe/shopsystem/database io.mainframe.shopsystem.Database AddSupplier "ssssss" "Demo Lieferant" "12345" "Musterstadt" "Musterstr. 5" "+49 1234 56789" "https://www.example.org"`
+
+It's also possible to directly access the database. While there are
+some triggers to keep the database in a sensible state, please be
+careful with direct database transactions. For accessing the database
+in write mode, you need to kill the shopsystem database process first.
+It will be restarted by any process, that needs the database DBus API.
+
+ * `pkill -15 shop-database`
+ * `sqlite3 /path/to/shopsystem.db`
+
+=== Display on / off via MQTT ===
+
+You can control display power via MQTT by configuring the MQTT settings (i.e. BROKER, TOPIC) in the config file.
+
+=== Customize Your Shop ===
+
+Edit the Logo in the logo.txt File.
+A helpful tool you will found here [http://patorjk.com/software/taag/](http://patorjk.com/software/taag/)
+
+=== Some Vala resources ===
+
+* https://wiki.gnome.org/Projects/Vala/ValaForJavaProgrammers
+* https://valadoc.org/
+* https://getbootstrap.com/2.3.2/ \ No newline at end of file