From 17429193da3e97ef93f044b40a964d1d6eefbb34 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Tue, 18 Jun 2019 20:20:31 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20re-add=20the=20README=20file=20?= =?UTF-8?q?=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..f61775faa --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# "Quick Start" Guide + +The following description applies to Ubuntu and similar debian based Linux distributions. + +## Prerequisites +These are the things you need to do/install before you can get started working on Uni2work. + +### Clone repository +Clone this repository and navigate into it +```sh +$ git clone https://gitlab.cip.ifi.lmu.de/jost/UniWorX.git && cd UniWorX +``` + +### `LDAP` +LDAP is needed to handle logins. + +Install: +```sh +sudo apt-get install slapd ldap-utils +``` + +### `PostgreSQL` +PostgreSQL will serve as database for Uni2work. + +Install: +```sh +$ sudo apt-get install postgresql +``` + +Switch to user *postgres* (got created during installation): +```sh +$ sudo -i -u postgres +``` + +Add new database user *uniworx*: +```sh +$ createuser --interactive +``` + +You'll get a prompt: + +```sh +Enter name of role to add: uniworx +Shall the new role be a superuser? (y/n) [not exactly sure. Guess not?] +Password: uniworx +... +``` + +Create database *uniworx*: +```sh +$ psql -c 'create database uniworx owner uniworx' +$ psql -c 'create database uniworx_test owner uniworx' +``` + +After you added the database switch back to your own user with `Ctrl + D`. + +To properly access the database you now need to add a new linux user called *uniworx*. Enter "uniworx" as the password. +```sh +$ sudo adduser uniworx +``` + +### `Stack` +Stack is a toolbox for "Haskellers" to aid in developing Haskell projects. + +Install: +```sh +$ curl -sSL https://get.haskellstack.org/ | sh +``` + +Setup stack and install dependencies. This needs to be run from inside the directory you cloned this repository to: +```sh +$ stack setup +``` + +During this step or the next you might get an error that says something about missing C libraries for `ldap` and `lber`. You can install these using +```sh +$ sudo apt-get install libsasl2-dev libldap2-dev +``` + +If you get an error that says *You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.* +Go ahead and install `libpq-dev` with +```sh +$ sudo apt-get install libpq-dev +``` + +Other packages you might need to install during this process: +```sh +$ sudo apt-get install pkg-config +$ sudo apt-get install libsodium-dev +``` + +Build the app: +```sh +$ stack build +``` + +This might take a few minutes... if not hours... be prepared. + +install yesod: +```sh +$ stack install yesod-bin --install-ghc +``` + +### `Node` & `npm` +Node and Npm are needed to compile the frontend. + +Install: +```sh +$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - +$ sudo apt-get install -y nodejs +``` + +### Add dummy data to the database +After building the app you can prepare the database and add some dummy data: +```sh +$ ./db.sh -f +``` + +## Run Uni2work +```sh +$ npm start +``` + +This will compile both frontend and backend and will start Uni2work in development mode (might take a few minutes the first time). It will keep running and will watch any file changes to automatically re-compile the application if necessary. + +If you followed the steps above you should now be able to visit http://localhost:3000 and login as one of the accounts from the Development-Logins dropdown. + +## Troubleshooting + +Please see the [wiki](https://gitlab.cip.ifi.lmu.de/jost/UniWorX/wikis/home) for more infos.