Go to file
nek0 a4956993de ignore .stack-work 2016-03-17 21:20:56 +01:00
Handler singles should be able to be zero. 2016-02-05 11:15:57 +01:00
Import fixed permissions 2016-01-30 18:29:45 +01:00
Migration/0.0.0-0.0.1 fixed permissions 2016-01-30 18:29:45 +01:00
Settings fixed permissions 2016-01-30 18:29:45 +01:00
app fixed permissions 2016-01-30 18:29:45 +01:00
config fixed permissions 2016-01-30 18:29:45 +01:00
messages sending users to restock menu instead of home after completed actions 2016-01-30 22:56:01 +01:00
static fixed permissions 2016-01-30 18:29:45 +01:00
templates fixed permissions 2016-01-30 18:29:45 +01:00
test added test cases 2016-03-17 21:20:33 +01:00
.gitignore ignore .stack-work 2016-03-17 21:20:56 +01:00
Application.hs fixed permissions 2016-01-30 18:29:45 +01:00
Foundation.hs fixed permissions 2016-01-30 18:29:45 +01:00
Import.hs fixed permissions 2016-01-30 18:29:45 +01:00
LICENSE.md fixed permissions 2016-01-30 18:29:45 +01:00
Model.hs fixed permissions 2016-01-30 18:29:45 +01:00
README.md updated readme due to stackification 2016-01-31 00:45:54 +01:00
Settings.hs fixed permissions 2016-01-30 18:29:45 +01:00
stack.yaml playing with the build system 2016-01-30 22:56:54 +01:00
yammat.cabal playing with the build system 2016-01-30 22:56:54 +01:00

README.md

yammat

Yet Another MateMAT

Introduction

This project aims to be an implementation for a trust based POS for hackerspaces.

Installation

Dependencies

Environment dependencies

A working Haskell capable environment. For that you will need haskell-stack, which can be installed with:

sudo apt-get install haskell-stack

In case you can't find this package in your repositories, get stack from stackage.

After you installed stack, let it make itself comfortable in your system with

stack setup

This might, depending on your system setup, take some time. Brew yourself some tea.

Build dependencies

Now that your Haskell environment is set up, you need to install the dependencies for building and running yammat, which are:

  • alex
  • happy
  • libpq-dev
  • postgresql

Install all of them through your package management system.

Building

To build this project enter stack build into your command line. Everything else should be done automagically.

This will take a long time, so go on a quest to find some cookies to go with the tea.

Deployment

Create a directory outside of the project directory, where you want to actually run the application. Copy or link the executable yammat from .stack-work/dist/<arch>/Cabal-<version>/build/eidolon/, where <arch> is your systems architecture and <version> the version of your cabal library, to your desired run location alongside with the folders static and config and their contenst. The Folders should be copied, or you will get problems with your git pulls.

Configuration

Let's leave the project directory and enter your desired run location. Check the configuration File config/settings.yml and alter its content to your liking. Most of these settings normally don't need to be altered much, except for approot. Change this setting to the root address with which you want to connect to the application, including the scheme (http or https). Additionally edit the settings email, currency and cash_charge.

  • email is the email address, which will receive notifications from yammat, should the stock run low.
  • currency is your currency sign or shorthand, which will be used when displaying prices.
  • cash_charge is the extra you want to charge your users, who pay cash.
    • Note: The value of this setting is in hundredths of your currency denomination.

cash_charge is effectively a "guest tax". Setting it to 0 is perfectly fine, if you don't want that.

Create a Postgresql User and Database according to the settings in the settings file and grant the user all privileges on the database.

Lift-Off

Run ./yammat config/settings.yml in your desired run location. Finally point a reverse-proxy (something like nginx) at http://localhost:3000 or any other port you configured in config/settings.yml.

For better control You can wrap an systemd unit file around this. How to do this is described in my blog.

Migrations

0.0.0-0.0.1

  • Delete column alt_time from table avatar in your Database with alter table "avatar" drop column "alt_time";
  • Start yammat normally to fill database with dummy data and stop it again
  • Run migration script
    • if you have built yammat with a sandbox, run runghc -package-db/full/path/to/sandbox(XXX-ghc-version-packages.conf.d /path/to/yammat/Migration/0.0.0-0.0.1/Migration.hs
      • Note: No space between the option -package-db and its argument
    • without sandbox: runghc /path/to/yammat/Migration/0.0.0-0.0.1/Migration.hs
  • Enjoy your freshly migrated Matemat