Skip to content

[Subsystem] Implement Plugin Subsystem Architecture (Port of Ivy.Plugin.Abstractions) #115

Description

@rorychatt

Problem Statement

The original C# Ivy-Framework features Ivy.Plugin.Abstractions and a dynamic plugins/ directory system for third-party extensions, custom widget registrations, and backend message handlers.

Rusty-Framework currently lacks a plugin system. Developers cannot package or load third-party extension modules dynamically into a rusty-server application.

Missing Functionality

  • Plugin and PluginModule trait definitions in Rust.
  • Dynamic widget and custom WebSocket message handler registration mechanisms.
  • Plugin lifecycle hooks (initialize, register_widgets, register_handlers, shutdown).
  • Schema validation for plugin configuration.

Proposed Architecture & Design

  1. Create a rusty-plugin module (or crate) defining Plugin, PluginContext, and PluginRegistry.
  2. Add plugin registration methods to rusty-server::ServerBuilder.
  3. Support plugin-scoped state injection and middleware registration.
  4. Implement an example plugin crate (rusty-plugin-example) demonstrating custom widget and route registration.

Acceptance Criteria

  • Plugin trait defined with lifecycle hooks (initialize, register_widgets, shutdown).
  • rusty-server supports loading and registering plugins during startup.
  • Custom widgets and message handlers registered by plugins render and execute cleanly.
  • Example plugin implementation provided with unit and integration tests.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions