Skip to content

UniversityOfHelsinkiCS/palaute

Repository files navigation

Palaute Release Release

More commonly known as Norppa

The open-source course feedback system used by the University of Helsinki and Tampere University

Production in https://norppa.helsinki.fi

Contributing

Found a bug or have a feature request?

Write an issue if you find mistakes, problems or something to improve in Palaute. Feel free to create a pull request.

Commit guidelines

We like the Conventional Commits specification.

Running locally

Clone the repo, and install docker to get started!

Before starting the project for the first time run npm i to install development dependencies.

Start frontend, backend and Jami in development mode:

$ npm start
# or
$ docker compose up

To run tests, you can use these commands:

$ npm run test:cypress # Open Cypress UI
$ npm run test:run # Run all Cypress specs in headless mode
$ npm test # CI, build test app and run all specs. Slow!

To populate the Norppa and Jami databases from a backup in a remote server, use

./scripts/get_prod_db.sh

(If you're not in Toska, you can still use the script for reference)

Environment configuration

Create a .env file inside the project's root directory. In that file, copy the contents of the .env.template file and add the correct values for the variables based on the documentation.

High-level development guidelines

Use feature flags for large new features or changes. Define them in configuration. This allows the different parties using Norppa to adopt new features at their own pace.

Documentation

The source code and documentation in this repo is the only source of truth for the Norppa technicalities. The written docs are quite limited in scope. If you're using Norppa, we hope you aid in their improvement.

Need something documented or see a problem in existing docs? Do not hesitate to create an issue or a PR. All kinds of contributions are welcome from everyone reading the Norppa documentation.

Service architecture overview

The Norppa core in this repo consists of a NodeJS server and a React frontend, but the entire Norppa system is built of many more services. The following graph describes Norppa service implementation in UoH.

graph TB
    subgraph Norppa
        subgraph Norppa core
            direction TB
            client[React app] --> server[NodeJS server]
        end

        server -->|Read, Write| pg[(Postgres)]
        updater[Updater] -->|Write| pg
    end

    subgraph Common Toska services
        jami[JAMI]
        pate[Pate]
        importer[Importer]
    end

    updater -->|Fetch data| importer
    importer -->|Fetch data| sisu[Sisu export APIs]
    server -->|Get IAM access| jami
    server -->|Send mail| pate


    subgraph Analytics
        direction TB
        sentry[Sentry]
        graylog[Graylog]
        grafana[Grafana]
    end

When implementing Norppa for your organization, you will implement your own Updater, Jami, Pate, and possibly some kind of importer, as well as analytics.

Topics

Maintained by Toska

Users and contributors:

University of Helsinki,

Tampere University

Artwork credits

Seal emojis & gif by https://github.com/googlefonts/noto-emoji/ licenced under SIL

norppa_holy_smoke.png by tttriple