mirror of
https://codeberg.org/likwid/likwid.git
synced 2026-02-09 21:13:09 +00:00
- Backend: Rust/Axum with PostgreSQL, plugin architecture - Frontend: Astro with polished UI - Voting methods: Approval, Ranked Choice, Schulze, STAR, Quadratic - Features: Liquid delegation, transparent moderation, structured deliberation - Documentation: User and admin guides in /docs - Deployment: Docker/Podman compose files for production and demo - Demo: Seeded data with 3 communities, 13 users, 7 proposals License: AGPLv3
95 lines
2.3 KiB
Markdown
95 lines
2.3 KiB
Markdown
# Plugin Management
|
|
|
|
Likwid uses a plugin architecture for extensibility.
|
|
|
|
## Plugin Types
|
|
|
|
### Core Plugins (Cannot Disable)
|
|
- `core.auth` - Authentication system
|
|
- `core.communities` - Community management
|
|
- `core.proposals` - Proposal system
|
|
|
|
### Voting Plugins
|
|
- `voting.approval` - Approval voting
|
|
- `voting.ranked_choice` - Instant runoff
|
|
- `voting.schulze` - Condorcet method
|
|
- `voting.star` - STAR voting
|
|
- `voting.quadratic` - Quadratic voting
|
|
|
|
### Feature Plugins
|
|
- `feature.delegation` - Liquid delegation
|
|
- `feature.deliberation` - Structured discussion
|
|
|
|
### Integration Plugins
|
|
- `integration.gitlab` - GitLab integration
|
|
- `integration.matrix` - Matrix chat integration
|
|
|
|
## Managing Plugins
|
|
|
|
### Via Admin Panel
|
|
|
|
1. Go to **Admin** → **Plugins**
|
|
2. View installed plugins
|
|
3. Enable/disable as needed
|
|
4. Configure plugin settings
|
|
|
|
### Via API
|
|
|
|
```bash
|
|
# List plugins
|
|
curl -H "Authorization: Bearer $TOKEN" \
|
|
http://localhost:3000/api/plugins/defaults
|
|
|
|
# Enable plugin
|
|
curl -X POST -H "Authorization: Bearer $TOKEN" \
|
|
http://localhost:3000/api/plugins/instance/voting.quadratic
|
|
|
|
# Disable plugin
|
|
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
|
|
http://localhost:3000/api/plugins/instance/voting.quadratic
|
|
```
|
|
|
|
## Voting Method Configuration
|
|
|
|
### Platform Level
|
|
Enable/disable voting methods for the entire instance:
|
|
|
|
```bash
|
|
# List available methods
|
|
curl http://localhost:3000/api/voting-methods
|
|
|
|
# Enable a method
|
|
curl -X PUT -H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"is_active": true}' \
|
|
http://localhost:3000/api/voting-methods/quadratic
|
|
```
|
|
|
|
### Community Level
|
|
Communities can configure which enabled methods they use:
|
|
|
|
```bash
|
|
# Set community voting methods
|
|
curl -X PUT -H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"methods": ["schulze", "approval"]}' \
|
|
http://localhost:3000/api/communities/{id}/voting-methods
|
|
```
|
|
|
|
## Plugin Security
|
|
|
|
### Signed Plugins
|
|
For third-party plugins, require signatures:
|
|
- Instance setting: `require_signed_plugins: true`
|
|
- Validates plugin authenticity
|
|
|
|
### Capabilities
|
|
Plugins request specific capabilities:
|
|
- Database access (read/write)
|
|
- Outbound HTTP
|
|
- Background jobs
|
|
- UI components
|
|
|
|
## Developing Plugins
|
|
|
|
See the [Plugin Development Guide](../reference/plugin-development.md) for creating custom plugins.
|