Self-hosted URL infrastructure

URL shortening for teams that need control.

A framework-free Java 26 URL shortener with REST administration, Vaadin UI, analytics, import/export, and persistent storage. Built for operators who want transparent infrastructure instead of another hosted black box.

deployment.map
Admin API :9090 localhost restricted
Redirect Server :8081 public short links
Vaadin UI :8080 operator console
EclipseStore disk persistent mappings
Java 26 Vaadin Flow 25 REST Admin API EclipseStore EUPL-1.2 Self-hosted

Product capabilities

Everything needed to operate short links in your own environment.

Focused features for link creation, redirect reliability, operational visibility, and data portability.

Short link management

Generate Base62 short codes or assign custom aliases with expiration and active-state controls.

REST administration

Create, list, edit, delete, toggle, validate imports, and export mappings through a local admin API.

Operator UI

A Vaadin Flow interface for teams that prefer a browser-based administration surface.

Analytics

Hourly and daily redirect counts with referrer, user-agent, and privacy-aware IP hash signals.

Import and export

ZIP-based bulk operations with validation staging, conflict detection, and invalid-entry reporting.

Persistent storage

Start in-memory for development and switch to EclipseStore for durable production deployments.

Architecture

Small modules, explicit boundaries.

The project is structured around clear runtime responsibilities: domain logic, server endpoints, Java client access, and UI. That makes it easier to inspect, deploy, and extend without carrying a large application framework.

Review architecture
urlshortener-core Domain model and utilities
urlshortener-server REST API and redirect listener
urlshortener-client Java SDK for API access
urlshortener-ui Vaadin Flow administration UI
quick-start.sh
git clone https://github.com/svenruppert/url-shortener.git
cd url-shortener

mvn clean package -DskipTests

cd urlshortener-server
java -jar target/urlshortener-server-*.jar

curl -X POST http://localhost:9090/api/shorten \
  -H "Content-Type: application/json" \
  -d '{"originalUrl":"https://example.com","alias":"demo"}'

curl -L http://localhost:8081/demo

Deployment path

From clone to first redirect in minutes.

The default setup starts with in-memory storage for local evaluation. Production deployments can enable EclipseStore and keep the public redirect listener separate from local administration.

Open getting started guide

Enterprise edition

Need SLA, SSO, or managed rollout?

Enterprise support is planned for teams that need uptime commitments, onboarding, SSO, multi-tenant deployment, custom branding, and operational guidance.

Talk to Enterprise