Skip to content
Flag of Europe
Made in the European Union · Independently built · Released under EUPL 1.2

← URL Shortener

Editions

The URL Shortener 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.

Community · EUPL 1.2 Enterprise · commercial Same code base, same version Nothing removed from the free core
Open source · EUPL 1.2
Community
Free, forever. Self-hosted. Not time-limited, feature-gated or nagware.
  • 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
Commercial licence
Enterprise
Optional plug-in layer. Commercial terms on request.
  • Campaigns, tags and placement labels
  • MCP server for AI agents
  • Command-line client
  • Audit export
  • Commercial licence and support by jSentinel Ltd

Feature comparison

Everything needed to create and operate short links is in the free Community edition. The Enterprise edition adds the manage-and-integrate-at-scale layer on top.

Capability
Community
Enterprise
Create & operate
Links, custom aliases, expiration and redirects
✓
✓
Click statistics — device, referrer and bot detection
✓
✓
Users, roles and permissions
✓
✓
REST API, Java client SDK and Vaadin admin UI
✓
✓
Bulk create, import and export
✓
✓
Manage & integrate at scale
Campaigns, tags and placement labels
—
✓
MCP server for AI agents
—
✓
Command-line client
—
✓
Audit export
—
✓

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<br/>domain · DTOs · validation"]
    server["server<br/>REST API · redirects"]
    ui["ui<br/>Vaadin admin"]
    client["client<br/>Java SDK"]
  end
  subgraph SPI["Plug-in seams (published SPI)"]
    hspi["HandlerContribution<br/>ServerContext · lifecycle hooks"]
    fspi["FeatureContribution<br/>routes · menu · form sections"]
  end
  subgraph EE["Enterprise Edition · commercial"]
    lm["link-meta<br/>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 licence 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 licence lapses, that data lies dormant — and comes back the moment a licence 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.
The split is a publishing boundary, not a rewrite. The Enterprise modules attach to the community core purely through published SPIs and share its version number — so there is nothing to migrate. See the Community Edition and the Enterprise Edition in detail, or read how it compares with other shorteners.