sitemapSystem Architecture

TheOpenPresenter is a web-based application built with a modular, multi-component architecture. The system comprises a robust backend server and specialized frontend applications, each serving distinct purposes.

Core Components

Backend Server

  • Built with Node.js

  • Implemented in TypeScript

  • Almost everything will go through the server

circle-info

We will eventually package the server so that it can be run locally by users. This will enable local use without any internet connection.

Frontend Applications

  1. Management Interface

    • Built with Next.js

    • Primary functions:

      • User account management

      • Project management

      • Landing page presentation

      • System navigation

  2. Remote Control Interface

    • Built with React & Vite

    • Serves as a wrapper for plugin-based control functionality

    • Provides presentation control capabilities

    • Designed for use on mobile devices or tablets in additional to standard desktop use

  3. Renderer Interface

    • Built with React & Vite

    • Handles content display and rendering

    • Acts as a wrapper for plugin-based rendering functionality

    • Designed for display screens/projectors

Simply put, the Remote is used to control the presentations. And Renderer is used to show the presentation. Meanwhile, the Next.js management interface is used to navigate/open/create the correct Remote & Renderer. All of them communicates with the server to get the data it needs.

spinner

Plugin System

TheOpenPresenter is powered by a plugin architecture.. All presentation features (e.g., video playback, slide shows) are implemented as plugins. This means that adding a functionality like playing videos is just a plugin away. Our core system provides various API that can be used to integrated the plugin to our system.

Here's the topology of a plugin:

  • Server-Side

    • Written in Typescript

    • Runs on the backend

    • Integrates with core system APIs

  • Client-Side:

    • Can include both remote control and renderer aspects

    • Supports any browser-compatible frontend technology

    • Integrates seamlessly with main interfaces

Last updated