Plugin-based, extensible ERP core
A multi-tenant ERP core with a real-time messaging backbone where new modules are built as separate plugins and shipped without touching the core system.
Situation
A team delivering the same ERP core to customers across different industries was forced to touch the shared codebase for every new customer request. A customisation built for one customer could affect others, and every change required a full rebuild and re-test cycle. What was needed was an architecture where new capabilities could be added without breaking the core — and where different customers could run different plugin sets on the same foundation.
Solution
We designed a multi-tenant ERP core built on a plugin architecture:
- Runtime plugin loader: A classpath-scanning system loads and unloads plugin JAR files without restarting the application; live control is available through HTTP admin endpoints
- Asynchronous message queue (RocketMQ): Communication between the core and plugins runs over a message queue; a failing plugin cannot affect the core or other plugins
- Real-time notifications (WebSocket + STOMP): When stock moves, a workflow step completes or a work-order status changes, the relevant users are notified instantly — no page refresh required
- Vue 3 admin interface: A full-featured SPA where the status and live logs of each plugin are visible and operational actions can be performed
- Report microservice: Heavy reports run in a dedicated microservice so they do not affect main application response times
- Marketplace infrastructure: A marketplace module for packaging and distributing plugins lays the groundwork for a third-party developer ecosystem
- Docker Compose development environment: PostgreSQL, RocketMQ and all application components spin up with a single command
Outcome
- New features are developed as independent plugins and shipped without touching the core
- A failing plugin or a slow-running report no longer affects core system response times
- Different customers run different plugin combinations on the same core; customer customisations are isolated from the main codebase
- The development team can respond to new customer requests in days rather than weeks
- The marketplace structure positions the platform to open a plugin ecosystem to external developers