How basavaraj8143/url-shortener works
This full-stack URL shortener turns authenticated users’ long URLs into short links, then redirects visitors while tracking clicks and expiry. The main workflow spans React URL creation and management, Spring controllers and services, persistent MySQL mappings, and a Redis-compatible redirect cache. Separate branches cover registration/login with JWT-protected requests, plus dashboard and analytics capabilities documented by the README. Frontend page wiring, most controllers, security configuration, and repositories were not excerpted, so uncertain internal calls are omitted; README-backed system links are documented edges.
Main entry points: UrlService.java URL service · pages Pages and navigation · client.js HTTP client · UrlRepository.java URL repository
Components 22
React application
- Pages and navigation
frontend/src/pages - Auth state
frontend/src/context/AuthContext.jsx - HTTP client
frontend/src/api/client.js
Spring API
- Auth endpoints
src/main/java/com/buss/url_shortener/controller/AuthController.java - URL endpoints
src/main/java/com/buss/url_shortener/controller/UrlController.java - Redirect endpoint
src/main/java/com/buss/url_shortener/controller/RedirectController.java - Validation and API errors
src/main/java/com/buss/url_shortener/exception/GlobalExceptionHandler.java
Identity and security
- Auth service
src/main/java/com/buss/url_shortener/service/AuthService.java - JWT service
src/main/java/com/buss/url_shortener/service/JwtService.java - JWT security filter
src/main/java/com/buss/url_shortener/config/JwtAuthenticationFilter.java - User details
src/main/java/com/buss/url_shortener/service/CustomUserDetailsService.java
URL lifecycle
- URL service
src/main/java/com/buss/url_shortener/service/UrlService.java - Shortening and aliases
src/main/java/com/buss/url_shortener/service/UrlService.java - Redirect lookup and clicks
src/main/java/com/buss/url_shortener/service/UrlService.java - URL management and stats
src/main/java/com/buss/url_shortener/service/UrlService.java
Persistence and cache
- URL repository
src/main/java/com/buss/url_shortener/repository/UrlRepository.java - User repository
src/main/java/com/buss/url_shortener/repository/UserRepository.java - URL records
src/main/java/com/buss/url_shortener/entity/Url.java - User records
src/main/java/com/buss/url_shortener/entity/AppUser.java - MySQL
- Valkey cache
Other components
- User / browser
Connections 25
- User / browser → Pages and navigation: uses
- Pages and navigation → HTTP client: requests
frontend/src/pages/Landing.jsx - HTTP client → URL endpoints: REST requests
- HTTP client → Auth endpoints: REST requests
- Pages and navigation → Auth state: reads auth
frontend/src/pages/Landing.jsx - Auth state → HTTP client: stores token
- Auth endpoints → Auth service: delegates
- Auth service → User repository: reads and saves
src/main/java/com/buss/url_shortener/service/AuthService.java - Auth service → JWT service: issues token
src/main/java/com/buss/url_shortener/service/AuthService.java - User details → User repository: loads user
src/main/java/com/buss/url_shortener/service/CustomUserDetailsService.java - JWT security filter → User details: loads identity
- Pages and navigation → URL endpoints: creates links
frontend/src/pages/Landing.jsx - URL endpoints → URL service: delegates
- URL service → Shortening and aliases: processes request
src/main/java/com/buss/url_shortener/service/UrlService.java - URL service → URL management and stats: lists and measures
src/main/java/com/buss/url_shortener/service/UrlService.java - URL service → Redirect lookup and clicks: resolves code
src/main/java/com/buss/url_shortener/service/UrlService.java - Redirect endpoint → URL service: gets destination
src/main/java/com/buss/url_shortener/controller/RedirectController.java - Shortening and aliases → URL repository: checks and saves
src/main/java/com/buss/url_shortener/service/UrlService.java - URL management and stats → URL repository: reads and deletes
src/main/java/com/buss/url_shortener/service/UrlService.java - Redirect lookup and clicks → URL repository: reads and updates
src/main/java/com/buss/url_shortener/service/UrlService.java - Shortening and aliases → User repository: finds owner
src/main/java/com/buss/url_shortener/service/UrlService.java - URL repository → MySQL: persists mappings
- User repository → MySQL: persists users
- Redirect lookup and clicks → Valkey cache: checks and caches
src/main/java/com/buss/url_shortener/service/UrlService.java - Validation and API errors → User / browser: returns API errors