Define custom plugins as separate packages
Modular Design: Ensure each plugin is self-contained and follows a modular design pattern. This will facilitate easier maintenance, updates, and scaling.
-
Dependency Management: Use a robust dependency management system to handle plugin dependencies.
-
Define a base structure, including abstract classes or interfaces that custom plugins must inherit from and implement their behaviors
-
Core Interfaces and Abstract Classes: Define core interfaces and abstract classes that enforce a consistent structure and behavior across all plugins.
-
Plugin Lifecycle Management: Define standard methods for initializing, starting, stopping, and destroying plugins to manage their lifecycle effectively.
-
Error Handling: Incorporate error handling mechanisms within the base structure to ensure plugins can gracefully handle failures.
-
Define and upload custom plugins to Fluent CMS and load them dynamically
-
Plugin Registration: Provide a mechanism for registering plugins with the CMS, including metadata such as name, version, author, and dependencies.
-
Dynamic Loading: Implement dynamic loading and unloading of plugins to allow for real-time updates and changes without requiring a system restart.
-
Security: Implement security checks to verify the integrity and authenticity of plugins before loading them.
- Examples of custom plugins: Payment Gateway Connector, Dynamic Navigation, Products Catalog, etc.
- Payment Gateway Connector: Integrate with various payment gateways (e.g., PayPal, Stripe) to facilitate online transactions.
- Dynamic Nav: Allow dynamic generation and management of navigation menus based on user roles and permissions.
- Products Catalog: Provide a flexible catalog system for managing products, categories, and attributes.
- Each plugin has two major parts: frontend (UI features) and backend (serverside) functionalities
- User should be able to define custom designed plugins in admin panel by uploading a zip file
- User should be able to update a plugin definition to latest version by uploading a zip file
- User should be able to delete a plugin definition
- Name
- Description
- Autor
- Version
- ViewTypes/Widgets
- Stylesheets