URL Shortener — Application Architecture

Click any component to explore it. Built with Spring Boot 4, Vaadin Flow 25, jOOQ, and PostgreSQL.

URL Shortener — Application Architecture Delivery layer (Vaadin views + Spring MVC controller) LoginView Request magic link HomeView Shorten a URL MyLinksView Manage owned links AnalyticsView Per-link click stats RedirectController GET /{code} → 302 Auth MagicLinkFilter Validate token SecurityConfig Spring Security chain Application services (no delivery/HTTP dependencies) MagicLinkService Token gen, email, rate limit ShortUrlService Create, delete, expire URLs ClickService Record, count, query Caffeine Cache short-url, 10 min TTL Repository layer (jOOQ — type-safe SQL, generated from Flyway migrations) UserRepository findOrCreate upsert TokenRepository Atomic consumeToken ShortUrlRepository Base62 on insert ID ClickRepository Insert, count, fetch PostgreSQL users uuid, email magic_link_token token, user_id, expires_at url_mapping short_code, original_url click_event short_code, referrer JavaMailSender → SMTP Mailpit (dev) / prod SMTP Legend Vaadin UI views Auth / security Services Repositories (jOOQ) Caching External / controller