Go to file
Steffen Jost 11bcef67f8 chore(tutorial): switch relevant exams from registerFrom/To to examStart/End
registering is of users/supervisors, but this page is for admins, so  examStart/examEnd are only relevant for when it is actually happening
2025-02-28 16:56:11 +01:00
.azure-pipelines/templates ci(azure-pipelines): add build-args to release build for network access 2025-02-14 21:32:49 +01:00
.gitlab-ci
.gnumake
.reuse
app
assets chore(daily): towards #2347 check complete, except i18n 2025-02-28 16:50:23 +01:00
config fix(fill): exam prefill dates work now 2025-02-28 16:53:20 +01:00
docker build(docker/fradrive): fix entrypoint script 2025-02-18 13:28:26 +01:00
frontend/src fix(icons): fix some botched icon definitions 2025-02-28 16:52:22 +01:00
hlint
LICENSES
load refactor(model): move JSONB instance to proper module 2025-02-28 16:25:43 +01:00
messages chore(tutorial): towards #2347 exam occurrence form design finished, but buggy somehow (WIP) 2025-02-28 16:56:11 +01:00
models chore(tutorial): towards #2347 exam occurrence form mostly working (WIP) 2025-02-28 16:56:11 +01:00
resources chore: conform to reuse spec 2023-07-14 23:09:02 +00:00
src chore(tutorial): switch relevant exams from registerFrom/To to examStart/End 2025-02-28 16:56:11 +01:00
templates chore(tutorial): towards #2347 exam occurrence form design finished, but buggy somehow (WIP) 2025-02-28 16:56:11 +01:00
test chore(tutorial): towards #2347 add convenience buttons to add exam tutorial (STUB) 2025-02-28 16:56:11 +01:00
testdata
utils build(release): make release versions compliant with semver-specifications 2025-02-20 13:34:13 +01:00
..develop.cmd
..develop.cmd.license
.babelrc.license
.dir-locals.el
.dir-locals.el.license
.envrc
.envrc.license
.eslintrc.json.license chore: conform to REUSE specification 2022-10-12 09:35:16 +02:00
.gitignore chore(gitignore): do not publish font files (for now) 2025-02-28 15:51:59 +01:00
.gitignore.license
.gitlab-ci.yml chore(gitlab-ci): install and decode font ttfs 2025-02-28 15:56:15 +01:00
.gitmodules
.gitmodules.license
.hlint.yaml
.mailmap
.mailmap.license
.npmrc.gup.license
.pre-commit-config.yaml
.versionrc.js
add-license-to-all.sh
azure-pipelines.yaml ci(azure-pipelines): fix image version check for build 2025-02-12 15:18:44 +01:00
babel.config.cjs
build.sh
cbt.sh
CHANGELOG.md Merge branch '145-build-system-rewrite' 2025-02-28 15:37:36 +01:00
CHANGELOG.md.license
commitlint.config.js
compose.yaml
CONTRIBUTING
CONTRIBUTING.license
Datenschutznotizen.txt
Datenschutznotizen.txt.license
db.sh
default.nix
enter
esbuild.config.mjs
eslint.config.mjs build(frontend): only lint frontend/src files to avoid ignored ignore-patterns 2025-01-22 11:40:41 +01:00
flake.lock
flake.lock.license
flake.nix
ghci.sh
haddock.sh
hlint.sh
jsconfig.json
jsconfig.json.license
karma.conf.cjs
load.sh
lpr
Makefile fix(ghci): ghci works now as expected 2025-02-28 16:52:17 +01:00
minio-file-uploads.md
minio-file-uploads.md.license
missing-translations.sh
new-file.sh
new-file.sh.license
nixpkgs.nix
package-lock.json chore(node-deps): add ttf2woff as dev dep 2025-02-28 15:55:40 +01:00
package.json
package.yaml fix(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
postcss.config.js
README.md
README.md.license
records.json
records.json.license
release.sh
routes minor adjustments to routes and icons 2025-02-28 16:39:33 +01:00
shell.nix Merge branch '145-build-system-rewrite' 2025-02-28 15:37:36 +01:00
stack-flake.yaml
stack.nix
stack.yaml
stack.yaml.lock
stack.yaml.lock.license
stackage.nix
test.sh
TODO.md
TODO.md.license
translate.hs
webpack.config.cjs

"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.

Install german locale

You will need to install the german locale at compile time.

Install:

  • Edit /etc/locale.gen as root and uncomment/add the line de_DE.UTF-8 UTF-8
  • Save the file and run sudo locale-gen

Clone repository

Clone this repository and navigate into it

$ git clone https://gitlab.cip.ifi.lmu.de/jost/UniWorX.git && cd UniWorX

LDAP

LDAP is needed to handle logins.

Install:

sudo apt-get install slapd ldap-utils

PostgreSQL

PostgreSQL will serve as database for Uni2work.

Install:

$ sudo apt-get install postgresql

Switch to user postgres (got created during installation):

$ sudo -i -u postgres

Add new database user uniworx:

$ createuser --interactive

You'll get a prompt:

Enter name of role to add: uniworx
Shall the new role be a superuser? (y/n) y  [user must be superuser to create extensions]
Password: uniworx
...

Create database uniworx:

$ 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.

$ sudo adduser uniworx

Stack

Stack is a toolbox for "Haskellers" to aid in developing Haskell projects.

Install:

$ 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:

$ 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

$ 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

$ sudo apt-get install libpq-dev

Other packages you might need to install during this process:

$ sudo apt-get install pkg-config
$ sudo apt-get install libsodium-dev

Node & npm

Node and Npm are needed to compile the frontend.

Install:

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt-get install -y nodejs

Build the app:

$ npm run build

This might take a few minutes... if not hours... be prepared.

install yesod:

$ stack install yesod-bin --install-ghc

Add dummy data to the database

After building the app you can prepare the database and add some dummy data:

$ ./db.sh -f

Run Uni2work

$ npm run 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 for more infos.