Plugin Development Overview
This page covers the core concepts behind GXP plugin development — the Developer Hub, plugin types, version lifecycle, dependency model, settings, and configuration flags. If you're ready to follow a hands-on walkthrough, jump to the Tutorials.
The Developer Hub
The Developer Hub lives in your team dashboard and is the central workspace for managing everything you build on GXP. Access it from the team-level navigation.
From the Developer Hub you can create and manage:
| Section | What it contains |
|---|---|
| Pages | Full-page attendee apps (registration, agenda, social feed, etc.) |
| Widgets | Global components injected into every portal page |
| Themes | Portal layout and styling packages |
| Tiles | Admin dashboard analytics displays |
| Plans | Experience templates that provision entire project structures |
Each plugin type shares the same core workflow: create a template, develop versions, publish, and install into projects. The difference is where and how they're rendered in the platform.
Plugin Types
Pages
Pages are full-screen attendee-facing apps embedded in a portal. Each page is a standalone plugin that can be installed into one or more projects and configured independently per installation.
Examples: event schedule, registration form, social feed, gamification leaderboard.
Widgets
Widgets are small components injected into every page of a portal. They run alongside page plugins and are useful for persistent UI — chat panels, notification overlays, analytics tracking.
Themes
Themes control the portal's overall layout, typography, color palette, and structural chrome. Only one theme is active per portal at a time.
Tiles
Tiles display metrics and quick-action panels on the admin project dashboard (the "Overview" tab). They're only visible to admins.
Plans
Plans are the highest-level construct. A plan bundles a set of pages, widgets, and configuration presets into a reusable template. When a project admin creates a new project from a plan, the plan provisions all the linked plugins, default settings, and navigation shortcuts automatically.
Git Repositories
When you create any plugin template, GXP automatically creates a Git repository on the platform's self-hosted Gitea server at git.eventfinity.app. This gives you:
- Source control via SSH or HTTPS
- Automated CI/CD builds triggered on every push to the build branch (
mainby default) - Collaborator access management synced with the platform
See Git Repos & Build Pipelines for setup instructions, build configuration, and output requirements.
Version Lifecycle
Plugins use independent version management. There is always exactly one draft version under active development, and any number of published versions that projects can install from.
Draft (v3) ← active development, can be edited
Published (v2) ← installed by projects, immutable
Published (v1) ← older published version, still usable
Deprecated (v0) ← marked outdated, still functional if pinned
Publishing
When you publish the current draft:
- The draft is marked published and becomes immutable
- A new draft is created with an incremented version number, copying all assets
- Projects can now install or upgrade to the newly published version
Version Pinning
Projects pin to a specific version. Publishing a new version does not automatically update existing installations. This means:
- Different projects can run different versions of the same plugin
- Breaking changes in a new version never affect existing installations
- Security scope is locked to the pinned version's dependency declarations
Plugin Assets
Each version contains the following editable assets:
| Asset | Purpose |
|---|---|
body_template | HTML/Vue template rendered in the attendee portal |
style | CSS stylesheet scoped to the plugin |
javascript | Compiled JavaScript module (plugin.es.js from your build) |
dependencies | Data and permission declarations |
settings | Configurable options exposed to project admins |
Assets can be edited directly in the dashboard code editor or uploaded via the CI/CD build pipeline from your Git repository.
Dependencies
Dependencies are the core of the plugin security model. Each version declares exactly what data and permissions it needs at install time. When a project admin installs the plugin, they resolve each dependency to a concrete value for their project.
[
{
"identifier": "attendee_profile",
"model": "Attendee",
"key": "id",
"permissions": ["Attendee:view", "Attendee:update"],
"events": { "onUpdate": "attendee.updated" }
}
]
At runtime the platform enforces these declarations — plugins can only access data their dependencies explicitly declare. No undeclared data access is possible.
See Plugin System for the full security model.
Settings
Plugin settings are configurable options exposed to project admins at install time. Define a settings schema in the version, and admins configure values through the dashboard form builder when installing or managing the plugin.
Settings use a three-level merge hierarchy:
Plugin Version Defaults (set by developer, in the version)
└── overridden by → Project Instance Settings (set by admin at install)
└── overridden by → Portal/Page-Level Settings (set by admin per portal)
This lets you ship sensible defaults while giving project admins full control over their configuration.
Configuration Flags
Plugins can declare configuration flags that control platform-level behavior for that plugin:
- Navigation flags — control how a page appears in portal navigation (visible, hidden, external link, anchor, etc.)
- Feature flags — enable or disable platform behaviors (caching, authentication requirements, analytics tracking, etc.)
Configuration flags are declared per-version and can be set to different values per project installation.
Next Steps
- Creating a Plugin — create your first plugin template
- Git Repos & Build Pipelines — clone your repo and configure CI/CD
- DevKit Basics — set up the local development environment
- Tutorials — hands-on step-by-step guides