summaryrefslogtreecommitdiffstats
path: root/README
blob: 6d8a54d864c02f1cf3191d2e609b46c45d614521 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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.

Build Dependencies:
 * build-essential
 * valac
 * libesmtp-dev
 * libgpgme11-dev
 * libncursesw5-dev
 * libncurses5-dev
 * libgee-dev
 * libgmime-2.6-dev
 * libarchive-dev
 * libgstreamer0.10-dev
 * librsvg2-dev
 * libsqlite3-dev
 * libpango1.0-dev
 * libssl-dev
 * dbus-x11

Additional runtime dependencies:
 * fonts-lmodern

Suggested runtime dependencies:
 * sqlite3

Building:
 * ./configure
 * make shop.db
 * make

Installation:
 * make install (TODO)

Usage:
 * setup ktt-shopsystem.cfg
 * start the curses UI in /etc/inittab
 * start the web UI via /etc/init.d/
 * create new user `TODO`
 * Sets a user's password with `mdbus2 io.mainframe.shopsystem.Database /io/mainframe/shopsystem/database io.mainframe.shopsystem.Database.SetUserPassword 1 test`
 * call the invoice tool via cron