URLShortener follows an open-core model. The Community Edition is a complete, production-ready URL shortener under the EUPL-1.2 — links, redirects, statistics, users and roles, REST API, import and export. Nothing is time-limited, nothing phones home, and nothing is disabled to sell you an upgrade.

The Enterprise Edition is an optional plug-in layer on top of it. It does not fork, patch, or replace the community code — it plugs into published extension points at runtime.

Open source

Community Edition

The complete shortener. Self-hosted, EUPL-1.2, free forever.

  • Links, custom aliases, expiration, redirects
  • Click statistics with device, referrer and bot detection
  • Users, roles and permissions
  • REST API, Java client SDK, Vaadin admin UI
  • Bulk create, import and export

EUPL-1.2 · Maven Central · GitHub

★ Commercial

Enterprise Edition

Optional plug-ins for teams that need campaign management, AI access and audit exports.

  • Campaigns, tags and placement labels
  • MCP server for AI agents
  • Command-line client
  • Audit export
  • Commercial license and support by jSentinel Ltd

Commercial license · private registry

How the two fit together

Enterprise features register themselves through Java’s ServiceLoader at startup. The community modules publish two extension seams — one for the REST server, one for the Vaadin UI — and the plug-in jars simply sit on the classpath.

flowchart TB
  subgraph CE["Community Edition · EUPL-1.2"]
    core["core
domain · DTOs · validation"] server["server
REST API · redirects"] ui["ui
Vaadin admin"] client["client
Java SDK"] end subgraph SPI["Plug-in seams (published SPI)"] hspi["HandlerContribution
ServerContext · lifecycle hooks"] fspi["FeatureContribution
routes · menu · form sections"] end subgraph EE["Enterprise Edition · commercial"] lm["link-meta
campaigns · tags · labels"] ae["audit-export"] mcp["MCP server"] cli["CLI"] end server --- hspi ui --- fspi hspi -.plugs into.- lm fspi -.plugs into.- lm hspi -.plugs into.- ae fspi -.plugs into.- ae

What this means in practice

  • No fork, no patched build. Community sources are never modified for a commercial feature. A build-time boundary test fails the build if community code ever references an enterprise package.
  • Graceful degradation. Without a license the plug-in endpoints answer 403 license required and their menu entries and views disappear. The community application keeps running unchanged.
  • Your data stays yours. Data written by an enterprise feature stays in your store. If a license lapses, that data lies dormant — and comes back the moment a license is present again. Nothing is deleted and nothing is held hostage.
  • One version number. Both editions are built and released from the same version, so a community upgrade never leaves the plug-ins behind.
Community Edition

The complete, self-hosted URL shortener under EUPL-1.2 — links, statistics, users and roles, REST API, client SDK and admin UI.

Enterprise Edition

Optional commercial plug-ins: campaigns and tags, MCP server for AI agents, CLI, and audit export — plugged into the community edition through published SPIs.