pdf-tei-editor / docs /development /plugin-system.md
cmboulanger's picture
disaster-recovery deploy of pdf-tei-editor
6a49f21 verified
|
Raw
History Blame Contribute Delete
2.33 kB
# Plugin System Overview
The PDF-TEI Editor uses two independent plugin systems:
## Frontend Plugins (JavaScript)
**Location**: `app/src/plugins/`
Frontend plugins extend the browser-based UI using a class or object-based architecture:
- **Dependency resolution** - Automatic topological sorting ensures plugins load in correct order
- **State management** - Integration with immutable state system
- **Lifecycle hooks** - `install`, `start`, `shutdown`, `onStateUpdate`
- **Plugin classes** - Modern pattern with automatic state management via `Plugin` base class
- **Plugin objects** - Legacy pattern with manual state tracking
**See**: [Frontend Plugin System Documentation](plugin-system-frontend.md)
## Backend Plugins (Python)
**Location**: `fastapi_app/plugins/`
Backend plugins provide server-side functionality and API endpoints:
- **Runtime discovery** - Plugins discovered from `fastapi_app/plugins/` and `FASTAPI_PLUGIN_PATHS`
- **Role-based access** - Control plugin visibility and execution by user roles
- **Custom routes** - Optional FastAPI routes for specialized endpoints
- **Frontend integration** - Plugins appear in toolbar, return HTML/URLs for display
**See**: [Backend Plugin System Documentation](plugin-system-backend.md)
## Key Differences
| Aspect | Frontend Plugins | Backend Plugins |
|--------|-----------------|-----------------|
| **Language** | JavaScript (ES6 modules) | Python |
| **Location** | `app/src/plugins/` | `fastapi_app/plugins/` |
| **Registration** | Static array in `app.js` | Runtime discovery |
| **State** | Reactive state management | Stateless endpoints with context |
| **Dependencies** | Topological sort via `deps` | No inter-plugin dependencies |
| **Lifecycle** | install → start → shutdown | Registered at startup |
| **Access Control** | Client-side (state-based) | Server-side (role-based) |
## Development Guides
- **[Frontend Plugin Development](../code-assistant/plugin-development.md)** - Practical guide for creating UI plugins
- **[Backend Plugin Development](../code-assistant/backend-plugins.md)** - Practical guide for creating server plugins
- **[Frontend Plugin Architecture](plugin-system-frontend.md)** - Technical architecture details
- **[Backend Plugin Architecture](plugin-system-backend.md)** - Technical architecture details