Skip to content

Repository Structure

Aarav Malani edited this page Jun 6, 2026 · 1 revision

The repository is structured as follows:

  • src/ - contains the source code for the plugins.
    • common/ - contains code that is shared between the web and runner plugins, such as channel IDs, plugin IDs, message types, etc.
    • web/ - contains the source code for the web plugins, which are meant to be used in the host application.
    • runner/ - contains the source code for the runner plugins, which are meant to be used in the runner application.
  • dist/ - contains the built external plugins. This directory is generated after running the build
  • lib/ - contains build tools and utilities
    • build.ts - the build script for the plugins

As an example, the src/web/test directory contains the source code for the test plugin meant to be used in the host application, while the src/runner/test directory contains the source code for the test plugin meant to be used in the runner application.

The repository uses a monorepo structure, where each plugin is a Yarn workspace. For a given plugin at src/<type>/<plugin-name>, the workspace name is @sourceacademy/<type>-<plugin-name>. For example, the workspace name for the test plugin in the web directory is @sourceacademy/web-test. This is also the name installable packages are available at on the npm registry.

Clone this wiki locally