Skip to content

FachschaftMathPhysInfo/pepp

Repository files navigation

Logo

Pepp

A software to organize preparatory courses at universities.
Explore a live version »

Report Bug · Request Feature

Getting started

Caution

For development and testing purposes, SQLite is supported as DB-System. However, in production please use Postgres as we only support this for DB-migrations. You will get no updates otherwise, or break your system. To use SQLite just don't provide Posgres connection environment variables.

Deployment via docker-compose

volumes: data: services: pepp: image: ghcr.io/fachschaftmathphysinfo/pepp:latest ports: - 8080:8080 env_file: .env depends_on: - postgres postgres: image: postgres:15.6-alpine volumes: - data:/var/lib/postgresql/data env_file: .env

(optional) Configuring mTLS with Postgres

  1. You need the files gen_certs.sh, postgresql.conf and folder tls from this repositorys root
  2. Run ./gen_certs.sh
  3. Deploy with provided keys:
volumes: data: services: pepp: image: ghcr.io/fachschaftmathphysinfo/pepp:latest volumes: - ./tls/certs/root.crt:/app/root.crt:ro - ./tls/certs/client.crt:/app/server.crt:ro - ./tls/certs/client.key:/app/server.key:ro ports: - 8080:8080 env_file: .env depends_on: - postgres postgres: image: postgres:15.6-alpine volumes: - data:/var/lib/postgresql/data - ./postgresql.conf:/etc/postgresql/config/postgresql.conf:ro - ./tls/certs/root.crt:/etc/postgres/security/root.crt:ro - ./tls/certs/server.crt:/etc/postgres/security/server.crt:ro - ./tls/certs/server.key:/etc/postgres/security/server.key:ro command: -c config_file=/etc/postgresql/config/postgresql.conf env_file: .env

Important

After initial startup run docker compose exec pepp pepp db init and docker compose exec pepp pepp db mark_applied

Environment Variables

Required for Production environment

Key Description Example
PUBLIC_URL Domain under which pepp is deployed https://pepp.example.com
PEPPER_KEY Generate a random 32 characters long string for password security -
SMTP_HOST E-Mail provider smtp.example.com
SMTP_USER The user to log into the SMTP Server alice@example.com
SMTP_PASSWORD The password to log into the SMTP Server -
SMTP_PORT The port of your SMTP Server 465
FROM_ADDRESS Address from which mails are send vorkurs@example.com
POSTGRES_HOST When given tries to connect. Creates a SQLite per default postgres
POSTGRES_PASSWORD Required if POSTGRES_HOST is given a string password
POSTGRES_PORT Required if POSTGRES_HOST is given 5433
POSTGRES_USER Required if POSTGRES_HOST is given postgres
POSTGRES_DB Required if POSTGRES_HOST is given postgres

optional

Key Description Example
LOG_LEVEL Default is Info. Set to Debug for more information Debug
LOCALE Default is UTC. This affects mainly the events exported as ICS which get converted. Europe/Berlin
ENV Set to Production on deployment Production
ENABLE_TRACING Application exports traces to an OpenTelemetry Collector true
ADMIN_USER Default is admin@pepp.local. Generated on initial startup admin@example.com
OIDC_LOGIN_PROVIDER_URL When given, initializes an Open ID Endpoint at /sso/oidc https://auth.example.com
OIDC_LOGIN_CLIENT_ID Required if OIDC_LOGIN_PROVIDER_URL is given pepp
OIDC_LOGIN_CLIENT_SECRET Required if OIDC_LOGIN_PROVIDER_URL is given insecure_secret
OIDC_LOGIN_SCOPES Required if OIDC_LOGIN_PROVIDER_URL is given openid profile email groups
OIDC_LOGIN_CLAIM_MAPPING Required if OIDC_LOGIN_PROVIDER_URL is given. Map single name strings to name and splitted to fn and sn '{"mail":"email","name":"name","groups":"groups"}'
OIDC_LOGIN_ADMIN_GROUPS User groups which will automatically get admin rights. vorkurs-orga root

Note

When configuring your OIDC-Provider, remember to set the callback uri to https://<your PUBLIC_URL here>/sso/oidc/callback.

Development

Build

cp .env .env.local docker compose build docker compose up -d && docker compose logs -f

Frontend

cd frontend npm i npm run codegen npm run dev

Backend

Important

In development, the backend creates some example data and creates an admin user: Mail: admin@pepp.local, Password: admin

cd server go generate ./... go run server.go

Contributions

  1. create an issue
  2. from this issue create a branch and work on it
  3. create a pull request and tag one of the main contributors for a short review
  4. sanfter Schulterklopfer ♡

Packages

 
 
 

Contributors

Languages