Skip to content

uzh-bf/klicker-uzh

Repository files navigation

Please note that this is the repository branch for KlickerUZH v3.0 released in August 2023. If you would like to have more information on the new concept of v3.0, have a look at our public discussion.

Please navigate to the dev branch for the older KlickerUZH v2.0, which will be available until the end of 2023. To migrate to KlickerUZH v3.0, start the migration process.

klicker-uzh is the code repository of the KlickerUZH open-source audience interaction platform. KlickerUZH is developed by the Teaching Center of the Department of Banking and Finance at the University of Zurich, Switzerland.

Klicker Screenshot Timeline

KlickerUZH v3.0 uses multiple different web applications and services, which communicate with each other:

  • Frontend PWA is the student frontend of KlickerUZH, which contains the student views for live quizzes, microlearnings, practice quizzes, leaderboards and more.
  • Frontend Manage is the lecturer frontend of KlickerUZH, which provides all the functionalities that lecturers need, including but not limited to question management, session management, course management and analytics.
  • Fontend Control is a minimal controller frontend, which allows to control live sessions from mobile devices in an optimized layout. Soon, this app will also be available as a PowerPoint integration (work in progress) for catalyst users.
  • Fontend Authentication is the authentication frontend of KlickerUZH, providing login functionalities through Edu-ID accounts and delegated logins to the manage frontend.
  • Backend Docker is the main backend service of KlickerUZH.
  • Backend Responses is a service that handles incoming student responses during a live session and puts them into an Azure queue for improved load handling.
  • Backend Response Processor accesses queued elements from the aforementioned service and processes them by computing scores and experience points, updating the cache, etc.
  • The v2.0 Export and v3.0 Import folders contain serverless Azure Functions related to the migration from KlickerUZH v2.0 to v3.0.

In addition to the key application components, this repository also includes the codebases for our landing page and documentation at www.klicker.uzh.ch, as well as deployment scripts for Helm/Kubernetes. An updated deployment documentation for self-hosting KlickerUZH v3.0 will be added until the end of the year.

To share code more easily between different services, we added new packages to the Package Directory with the following components:

  • Prisma: The prisma package contains the SQL database schema as well as migration scripts between different minor versions of KlickerUZH.
  • GraphQL: The GraphQL package contains the complete GraphQL schema and all resolvers for the KlickerUZH backend, as well as all business logic for provided services. For consistent typing, Pothos GraphQL and an auto-generated schema are used.
  • Grading: The grading package provides the grading logic that is used to assign scores and experience points to participants and groups in gamified live quizzes, practice quizzes, microlearnings and other KlickerUZH elements.
  • LTI: The LTI package contains logic to offer automatic sign ins for students through the Learning Tools Interoperability "LTI" standard (for OpenOLAT and Moodle integration).
  • Internationalization: The i18n package provides internationalized messages for all KlickerUZH services.
  • Shared Components: The shared-components package is configured as an internal turborepo package, mainly providing the possibility to share React components between the frontends and reduce code duplication.
  • Markdown: The markdown package exports a React component to render markdown strings into formatted elements.

For more code commonality between different projects at the Teaching Center and the Department of Banking and Finance more generally, we also use a Design System Package with commonly used, pre-styled and theme-based components.

Roadmap / Issues

The KlickerUZH project is publicly managed and documented in this repository. A corresponding roadmap of our current developments can be found on our Homepage. Please feel free to add any issues or feature requests you might have to the Roadmap and Bug reports or start a new discussion in our Community.

Important Links

The following resources might be of special interest to you:

Deployment

This section is still work in progress as our architecture continues to experience minor changes and will be updated as soon as possible. If you would like to deploy an instance of the legacy KlickerUZH v2.0, please refer to the corresponding Deployment Section of the legacy docs.

Contributing

We welcome any contributions to the KlickerUZH project. Before considering any contribution, we recommend that you create a discussion to discuss your proposed addition with the project maintainers and other contributors. Please also make sure to follow our Contributing Guidelines, as your PR might need amendments otherwise.

License

The KlickerUZH and all of its subprojects are licensed under the AGPLv3.

klicker-uzh Coverage Status