🚀 Worklenz Release: 100% AGPLv3 Open Source
We are thrilled to announce a major milestone for Worklenz! With this release, the entire core platform and client portal have transitioned to a 100% Open Source model under the GNU Affero General Public License v3.0 (AGPLv3), alongside the debut of our new Modular Addon Architecture.
🌟 Highlights
🔓 100% AGPLv3 Open Source
- Commercial Licensing Removed: We have retired the dual-licensing and commercial license restrictions across the repository, backend extensions, and the Client Portal.
- Freedom to Self-Host: All features across the core platform are now unified under GNU AGPLv3, providing self-hosters and organizations complete freedom to inspect, customize, and deploy Worklenz without licensing barriers.
🧩 New Features
🔌 Modular Addon Engine & SDK Architecture
To allow custom enterprise workflows, bespoke client integrations, and private features to coexist cleanly alongside the open-source core, we have introduced a powerful, decoupled Addon Engine:
-
Self-Contained Addons (
/addons/<addon-id>):- Independent directories containing their own backend routes, database migrations, frontend UI components, and state management.
- Enabled simply by declaring them in environment variables:
ENABLED_ADDONS=addon-a,addon-b.
-
Backend Addon SDK (
@worklenz/addon-sdk):- Exposes core utilities, database access, base controllers, notifications, and validators to addons.
- Reuses the core backend's compiled modules and PostgreSQL connection pool, ensuring optimal resource usage with zero duplicate connection overhead.
- Dynamically mounts addon routers under
/api/v1/addons/<addon-id>.
-
Isolated Addon Database Migrations:
- Run migrations for all enabled addons via
npm run migrate:addons. - Each addon tracks its schema in a dedicated tracking table (e.g.
pgmigrations_<addon_id>), guaranteeing zero interference with the core database schema. - Built-in collision detection, deduplication, and pre-flight validation prevent schema conflicts.
- Run migrations for all enabled addons via
-
Frontend UI Extension Slots:
- Addons can inject UI components into established platform slots without modifying core code:
- Navigation Bar: Add custom menu entries (
navigationItems). - Project Settings: Register dedicated configuration tabs (
projectSettingsTabs). - Project List: Inject customized data columns (
projectListColumns). - Routing & State: Dynamically register React Router routes and Redux slices.
- Navigation Bar: Add custom menu entries (
- Built-in collision guards protect core Redux slices (
auth,user, etc.) from being overwritten.
- Addons can inject UI components into established platform slots without modifying core code:
🛠️ Improvements & Stability Fixes
- Cross-Platform Compatibility: Replaced hardcoded POSIX path delimiters with platform-native separators, ensuring seamless addon loading on Windows, Linux, and macOS.
- Robust Migration Runner:
- Scoped PostgreSQL constraint guards (
conrelid) to specific tables, ensuring idempotent migration execution across fresh and existing databases. - Enhanced migration runners to properly fail on non-zero statuses, process signals, and corrupted manifests.
- Scoped PostgreSQL constraint guards (
- Vite Plugin Integration:
- Vite addons plugin now honors environment variables loaded via
.envfiles (VITE_ENABLED_ADDONS, custom branding titles, and favicons). - Gracefully guards against incomplete or unmounted extension slot components.
- Vite addons plugin now honors environment variables loaded via
- Docker & Self-Hosting Enhancements:
- Updated environment templates (
.env.example,worklenz-backend/.env.template,worklenz-frontend/.env.example) with addon engine documentation. - Streamlined container bootstrap scripts and documentation in
docs/SELF_HOSTING.md.
- Updated environment templates (
⚙️ Configuration & Quick Start
Enabling Installed Addons
In your .env file:
# Comma-separated list of enabled addon directory IDs
ENABLED_ADDONS=wip-sheet,crm-handoffs
# For frontend-only builds
VITE_ENABLED_ADDONS=wip-sheet,crm-handoffsRunning Addon Migrations
cd worklenz-backend
npm run migrate:addons🤝 Contributing & Community
With the full AGPLv3 transition, community contributions, bug reports, and addon development are more welcome than ever! Check out our updated README and addons/README.md to get involved.