Skip to main content

Overview

The Invenicum plugin system allows you to extend and customize your inventory management experience. Plugins can add custom actions, integrate with external services, modify UI components, and automate workflows using the STAC (Stateless Action Components) framework.

Plugin Marketplace

Access the plugin marketplace to discover community-created extensions:
1

Access the Plugin Screen

Navigate to the Plugins section from the main menu. You’ll see three tabs:
  • Librería - Installed plugins from the marketplace
  • Míos - Plugins you’ve created
  • Market - Community plugins available for installation
2

Browse Available Plugins

Switch to the Market tab to view all available plugins. Each card displays:
  • Plugin name and description
  • Author information
  • Version number
  • Installation status
3

Install a Plugin

Click on a plugin card and select “Instalar” to add it to your library. The plugin will be immediately available after installation.

Managing Installed Plugins

Activating and Deactivating

Installed plugins can be toggled on or off without uninstalling:
// From plugin_provider.dart:182
await togglePluginStatus(id, status);
Active plugins are indicated with a visual marker and will execute their actions when triggered.

Updating Plugins

When a new version is available, an update button will appear on the plugin card:
The system automatically checks for updates by comparing your installed version with the latest version available in the marketplace.

Uninstalling Plugins

To remove a plugin:
  1. Navigate to your plugin library
  2. Select the plugin you want to remove
  3. Choose “Desinstalar” from the options
  4. Confirm the action

Configuring Plugins

Each plugin may have configurable settings accessible through the plugin editor:
Basic Settings
  • Name: Display name for the plugin
  • Description: Brief explanation of functionality
  • Slot: Where the plugin integrates (e.g., item actions, dashboard widgets)
  • Version: Semantic version number
Advanced Settings
  • UI Configuration: Custom interface elements
  • Public/Private: Control plugin visibility in the marketplace
  • STAC Actions: Define custom actions and behaviors

Plugin SDK Overview

Invenicum plugins are built using the STAC framework, which provides a declarative way to define actions and UI components.

SDK Initialization

The plugin system initializes the STAC SDK with your custom action parsers:
// From plugin_service.dart:32
Future<void> initSdk({String? userName}) async {
  if (_isInitialized) return;
  
  await Stac.initialize(
    actionParsers: [InvenicumSdkParser(userName: userName)],
  );
  _isInitialized = true;
}

Available SDK Methods

Plugins can invoke several built-in methods through the SDK:
{
  "action": "invenicum_sdk",
  "method": "showAlert",
  "params": {
    "message": "Custom notification message"
  }
}

Creating Custom Actions

Define custom actions in your plugin’s STAC configuration:
{
  "id": "my_custom_plugin",
  "name": "My Custom Plugin",
  "version": "1.0.0",
  "slot": "item_actions",
  "actions": [
    {
      "type": "invenicum_sdk",
      "method": "showAlert",
      "params": {
        "message": "Action executed successfully!"
      }
    }
  ]
}

Creating Your Own Plugins

To create a new plugin:
1

Open Plugin Editor

Click the “Nuevo Plugin” floating action button on the plugins screen.
2

Define Plugin Metadata

Fill in the basic information:
  • Unique ID (auto-generated from name)
  • Display name
  • Description
  • Target slot
  • Initial version (1.0.0)
3

Configure UI and Actions

Define your plugin’s interface and behavior using the STAC format. Reference the SDK documentation for available methods.
4

Test and Publish

Save your plugin to test it locally. When ready, mark it as public to share with the community.
Plugins created by you can be edited at any time. For community plugins, you’ll need to submit a pull request to suggest changes.

GitHub Integration

Invenicum plugins are backed by GitHub for version control and collaboration:
  • Official Plugins: Stored in the main repository
  • Community Plugins: Fetched from the community marketplace
  • Auto-sync: Your plugins are automatically synchronized
  • Pull Requests: Suggest improvements to community plugins

Publishing to Marketplace

When you publish a plugin:
// From plugin_service.dart:68
Future<Map<String, dynamic>> createPlugin(
  Map<String, dynamic> pluginData,
) async {
  final response = await _dio.post('/plugins', data: pluginData);
  return Map<String, dynamic>.from(response.data);
}
The backend automatically:
  1. Validates plugin structure
  2. Creates a GitHub entry (for authorized authors)
  3. Makes it available in the marketplace
  4. Tracks download statistics

Best Practices

  • Keep plugin actions lightweight
  • Avoid blocking UI operations
  • Use async operations for network calls
  • Cache data when possible
  • Provide clear descriptions and documentation
  • Use appropriate slots for your functionality
  • Test with different screen sizes
  • Handle errors gracefully with user feedback
  • Use semantic versioning (major.minor.patch)
  • Document breaking changes
  • Test updates before publishing
  • Maintain backward compatibility when possible

Troubleshooting

  • Ensure the plugin is activated in your library
  • Check that the slot configuration matches your use case
  • Verify the plugin hasn’t been uninstalled
  • Refresh the plugin list
  • Check your internet connection
  • Verify the new version is compatible
  • Try uninstalling and reinstalling
  • Check for error messages in the console
  • Verify the method name is correct
  • Check that parameters match the expected format
  • Ensure the SDK is initialized
  • Review the plugin logs for errors

Next Steps

Templates

Explore the template marketplace for collection starters

Integrations

Connect Invenicum with external services

Custom Fields

Define custom field types for your assets

Achievements

Track your inventory management progress

Build docs developers (and LLMs) love