Plugin Overview

IDAH's plugin system allows you to extend the platform with custom annotation tools, media processors, and data exporters.

What are Plugins?

Plugins in IDAH are modular components that can add new functionality to the platform. Each plugin can include:

Frontend Components

Custom UI elements, annotation tools, and visualizations built with SvelteKit.

Media Service Backend

Process and transform media files (images, videos, audio) during import.

Sync Service Backend

Export and synchronize dataset data with external systems.

Plugin Types

Frontend-Only Plugins

Plugins that consist only of UI components. These are ideal for:

  • Custom annotation tools and editors
  • Data visualizations and dashboards
  • UI widgets and utilities
  • Custom dataset views

Full-Stack Plugins

Plugins with both frontend and backend components. These can:

  • Process media files during import
  • Transform and convert media formats
  • Export data in custom formats
  • Integrate with external APIs and services

Plugin Paths

IDAH supports two plugin directories for different environments:

Development Plugins

Path: ./plugins_dev/plugins

  • Purpose: Development and testing
  • Environment: Local development only
  • Loading: Automatically loaded when running IDAH in development mode
  • Not included: These plugins are not loaded in production
  • Use for: Experimental plugins, work-in-progress features, testing

Production Plugins

Path: ./plugins

  • Purpose: Production-ready plugins
  • Environment: Both development and production
  • Loading: Always loaded in all environments
  • Use for: Stable, production-ready plugins

Recommendation: Start developing in ./plugins_dev/plugins, and move to ./plugins when ready for production.

Plugin Structure

A typical IDAH plugin follows this structure:

<plugin_name>/
   ├─ manifest.json          # Plugin metadata
   ├─ README.md              # Plugin documentation
   ├─ Gemfile                # Ruby dependencies (backends)
   ├─ Rakefile               # Build tasks
   ├─ backends/              # Optional backend services
   │  ├─ media/                 # Media processing
   │  └─ sync/                  # Data export
   └─ frontend/              # SvelteKit UI
      ├─ package.json
      └─ src/

Manifest File

The manifest.json file contains plugin metadata:

<plugin_name>/manifest.json
{
  "name": "my-plugin",
  "display_name": "My Plugin",
  "description": "A custom annotation plugin",
  "version": "1.0.0",
  "author": "Your Name"
}

Built-in Plugins

IDAH comes with a built-in video annotation plugin:

idah-video

A full-stack plugin for video annotation with frame-by-frame processing, object tracking, and timeline-based annotations.

Location: ./plugins/idah-video/

Plugin Lifecycle

  1. Development
    Create and test your plugin in ./plugins_dev/plugins
  2. Testing
    Write and run tests for both frontend and backend components
  3. Building
    Build the frontend for production deployment
  4. Deployment
    Move to ./plugins for production use

🔌 Ready to extend IDAH? Start by creating your first plugin!