Project Overview
What is MetaOne?
MetaOne is a composable business operations platform built on Java and Spring Boot. It provides a structured runtime for hosting extensions (PF4J plugins) that deliver CRM, chat, and other business capabilities — all accessible through a unified API, with tenant data isolated per workspace.
Think of MetaOne as a platform kernel: it handles the hard parts (authentication, multi-tenancy, plugin lifecycle, event routing, UI integration) so that each extension can focus purely on its domain logic.
Purpose
Traditional business software is monolithic — adding a new feature means changing the core application. MetaOne inverts this: the core platform is frozen, and all business capabilities arrive as independently deployed extensions. The platform provides the wiring; extensions provide the intelligence.
This enables:
- Rapid feature delivery — a new capability can be installed into a workspace without any platform code change or restart
- Tenant isolation — each workspace gets its own database, its own extension configuration, and its own capability registry
- Loose coupling — extensions communicate through events; they do not import each other's code
Scope
MetaOne manages the following on behalf of extensions:
| Concern | How MetaOne Handles It |
|---|---|
| Extension lifecycle | Install, enable, disable, update, uninstall via API |
| Capability routing | Registry-driven dispatch to in-process or remote handlers |
| Event dispatch | Workspace-scoped pub/sub with async in-process and HTTP delivery |
| UI integration | Nav, route, and widget mounts served to the frontend shell at runtime |
| Authentication | JWT-based auth with platform roles and workspace-level access control |
| Configuration | Per-workspace config with encrypted secrets, validated before enabling |
| Database provisioning | Each workspace gets its own schema/database for extension data |
| Audit logging | Every lifecycle action is recorded in ext_audit_log |
Out of scope for the platform:
- Business logic (owned by extensions)
- Frontend application shell (consumes the UI Mount API)
- Chatwoot, third-party CRM systems, or other external services (integrated via extensions)
Target Audience
| Audience | What they use |
|---|---|
| Extension developers | SDK (metaone-sdk), Capability SDK, Event SDK, Webhook SDK, Manifest reference |
| Platform operators | Installation guide, Configuration reference, API (admin endpoints) |
| Frontend developers | UI Mount API, Authentication API |
| Product/API consumers | REST API reference, Capability invocation, Event publishing |
Key Concepts
Workspace
The top-level tenancy unit. All installations, capabilities, events, and UI mounts are scoped to a workspace. A single platform deployment can host many workspaces.
Extension
A packaged unit of business capability. Extensions are either:
- In-process — PF4J plugin JARs loaded into the host JVM
- External services — Remote HTTP services registered with the platform
Capability
A named, invocable operation exposed by an extension (e.g. crm.product.search). Capabilities are invoked via the platform API and routed to the correct extension handler.
Event
A workspace-scoped broadcast message (e.g. crm.deal.closed). Extensions publish events when something noteworthy happens. Other extensions subscribe to events they care about — without knowing who publishes them.
Manifest
A structured declaration (the ExtensionManifest record) that describes everything the platform needs to know about an extension at install time: runtime type, capabilities, UI mounts, event subscriptions, permissions, and configuration schema.
Technology Foundation
| Component | Technology |
|---|---|
| Platform host | Java 25, Spring Boot 4.x |
| Plugin runtime | PF4J (Plugin Framework for Java) |
| Authentication | JWT (HMAC-SHA256), Spring Security, OAuth2 (Google) |
| Database | PostgreSQL (production), H2 (tests) |
| ORM | Spring Data JPA / Hibernate |
| Build | Maven 3.9+ (multi-module reactor) |
| Cache | Caffeine |