System 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. We also wrap the system as apps/desktop software.

Core Components

Backend Server

  • Built with Node.js

  • Implemented in TypeScript

  • Almost everything will go through the server

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 React & Vite

    • 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

  4. Landing page

    • Build with Astro

    • Handles everything in the landing page

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