Skip to main content

Introduction

Talawa Plugins allow organizations to extend the functionality of the Talawa platform by installing additional features when needed.

Plugins are modular, optional components that can be installed, activated, deactivated, or removed from the Admin Panel without affecting the core system.

What You Can Do with Plugins

  • Add Backend Functionality: Create GraphQL queries, mutations, and database tables
  • Extend Admin Panel: Add new pages, drawer items, and UI components
  • Integrate External Services: Connect with payment gateways, analytics, or third-party APIs
  • Add Business Logic: Implement custom workflows, validations, and data processing
  • Create Developer Tools: Build debugging, monitoring, or development utilities

Plugin Architecture

Each plugin consists of two main parts:

API Plugin (Backend)

  • GraphQL Extensions: Queries, mutations, and subscriptions
  • Database Extensions: Tables, enums, and relations
  • Hook Extensions: Event handlers for plugin lifecycle
  • Builder-First Approach: Uses Pothos GraphQL builder for type-safe schema generation

Admin Plugin (Frontend)

  • Route Extensions: New pages and navigation
  • Drawer Extensions: Menu items and navigation
  • Injector Extensions: Code injection points for UI components
  • React Components: Custom UI components and pages

Extension Points

The plugin system provides specific extension points for different contexts:

Route Extensions

  • RA1: Admin Global Routes - System-wide admin functionality
  • RA2: Admin Organization Routes - Organization-specific admin features
  • RU1: User Organization Routes - Organization-specific user features
  • RU2: User Global Routes - System-wide user functionality

Drawer Extensions

  • DA1: Admin Global Drawer - Menu items for global admins
  • DA2: Admin Organization Drawer - Menu items for organization admins
  • DU1: User Organization Drawer - Menu items for organization users
  • DU2: User Global Drawer - Menu items for global users

Injector Extensions

  • G1-G5: General Injectors - Code injection points for UI components

Plugin Lifecycle

Plugins follow a well-defined lifecycle:

  1. Installation: Plugin files are copied to the system
  2. Loading: Plugin manifest is parsed and validated
  3. Activation: Plugin components are registered and initialized
  4. Runtime: Plugin is active and serving requests
  5. Deactivation: Plugin components are unregistered
  6. Uninstallation: Plugin files are removed from the system

Managing Plugins

Navigate to the Plugins section in the Admin Panel to:

  • Browse available plugins
  • Install or uninstall plugins
  • Enable or disable installed plugins
  • View plugin details and documentation
  • Monitor plugin status and errors

Only plugins compatible with your system version are shown.

Development Features

  • Type Safety: Full TypeScript support with comprehensive type definitions
  • Hot Reloading: Development mode supports live plugin updates
  • Error Handling: Robust error handling and recovery mechanisms
  • Logging: Comprehensive logging for debugging and monitoring
  • Testing: Built-in testing utilities for plugin development

Notes

  • Plugins are isolated and cannot interfere with core system functionality
  • All plugin operations are logged for audit purposes
  • Plugin compatibility is checked during installation
  • Failed plugins are automatically deactivated to prevent system issues

Plugins are optional, safe, and customizable — designed to help you tailor Talawa to your organization's specific needs while maintaining system stability and security.