A pure-JDK URL shortener built as a learning vehicle for the Advent Calendar 2025 series. Every step is documented in a blog post — 14 parts covering everything from the route registry and persistence layer to Server-Sent Events for live click tracking and a Vaadin Flow UI.

What it covers

  • No Spring, no JPA, no magic. Pure Core Java + Vaadin Flow.
  • Per-step incremental builds. Each post in the series adds one feature you can run, break, and learn from in isolation.
  • REST + UI in one binary. A REST endpoint creates short URLs; the Vaadin Flow admin UI lists clicks live via SSE.
  • Production-style concerns covered too — auth, observability, persistence, rate-limiting — but always from the JDK side, not framework-side.

Why a separate project site?

The shortener has its own domain (url.svenruppert.com) because it doubles as the live demo — every shortened link runs through this exact codebase. Eat your own dogfood, etc.

The build details, architecture decisions and lessons-learned all live on the series page on this site.