How sudhanshusingh6/tinyroute works
TinyRoute is a full-stack URL shortener: users create and manage links, visitors resolve short codes, and the system records clicks for live and historical analytics. The frontend also exposes QR codes, destination previews, and premium public bio pages; account, subscription, and rate-limit flows support those features. The graph follows documented flows and sampled service calls. Several capabilities are documented but their wiring was not sampled, so only explicitly supported links are shown.
Main entry points: useQuery.js API queries · AnalyticsEventBackgroundWorker.java Event worker · RedirectService.java Redirect resolver · UrlMappingRepository.java URL records
Components 34
Web client
- React app
frontend/src/App.jsx - API queries
frontend/src/hooks/useQuery.js
Link lifecycle
- URL endpoints
backend/src/main/java/com/tinyroute/url/controller/UrlCreationController.java - URL management
backend/src/main/java/com/tinyroute/url/service/UrlManagementService.java - URL creation
backend/src/main/java/com/tinyroute/url/service/UrlCreationService.java - URL validation
backend/src/main/java/com/tinyroute/url/service/UrlValidationService.java - Redirect endpoint
backend/src/main/java/com/tinyroute/redirect/controller/RedirectController.java - Redirect resolver
backend/src/main/java/com/tinyroute/redirect/service/RedirectService.java - Preview and QR
backend/src/main/java/com/tinyroute/url/controller/PreviewController.java - Preview service
backend/src/main/java/com/tinyroute/url/service/UrlPreviewService.java - URL records
backend/src/main/java/com/tinyroute/url/repository/UrlMappingRepository.java - Redirect cache
backend/src/main/java/com/tinyroute/infra/cache/RedirectCacheService.java
Identity and access
- Auth endpoints
backend/src/main/java/com/tinyroute/auth/controller/AuthController.java - Authentication
backend/src/main/java/com/tinyroute/auth/service/AuthService.java - JWT handling
backend/src/main/java/com/tinyroute/security/jwt/JwtService.java - Refresh tokens
backend/src/main/java/com/tinyroute/auth/repository/RefreshTokenRepository.java - Rate limiting
backend/src/main/java/com/tinyroute/ratelimit/RateLimitService.java
Click analytics
- Analytics endpoints
backend/src/main/java/com/tinyroute/analytics/controller/AnalyticsController.java - Analytics queries
backend/src/main/java/com/tinyroute/analytics/service/AnalyticsService.java - Live analytics
backend/src/main/java/com/tinyroute/analytics/service/RedisAnalyticsService.java - Click event queue
backend/src/main/java/com/tinyroute/analytics/infra/RedisAnalyticsEventQueue.java - Event worker
backend/src/main/java/com/tinyroute/analytics/service/AnalyticsEventBackgroundWorker.java - User-agent parser
backend/src/main/java/com/tinyroute/analytics/infra/UserAgentParsingService.java - Geo lookup
backend/src/main/java/com/tinyroute/analytics/infra/GeoLocationService.java - Click history
backend/src/main/java/com/tinyroute/analytics/repository/ClickEventRepository.java
Profiles and billing
- Profile endpoints
backend/src/main/java/com/tinyroute/user/controller/PublicProfileController.java - User service
backend/src/main/java/com/tinyroute/user/service/UserService.java - User records
backend/src/main/java/com/tinyroute/user/repository/UserRepository.java - Billing endpoints
backend/src/main/java/com/tinyroute/billing/controller/BillingController.java
Other components
- Link visitor
- Dashboard user
- Redis
- PostgreSQL
- Geo service
Connections 43
- Dashboard user → React app: uses
- Link visitor → Redirect endpoint: opens short link
- React app → API queries: requests data
- API queries → URL endpoints: calls API
- URL endpoints → URL creation: creates links
- URL endpoints → URL management: manages links
- URL creation → URL validation: validates destination
- URL creation → URL records: saves mapping
- URL management → URL records: updates mapping
- Redirect endpoint → Redirect resolver: resolves code
- Redirect resolver → Redirect cache: checks and warms
- Redirect cache → Redis: reads and writes
- Redirect resolver → URL records: loads on miss
- URL records → PostgreSQL: reads and writes
- Redirect resolver → Live analytics: records click
- Redirect resolver → Click event queue: enqueues event
- Click event queue → Redis: stores events
- Event worker → Click event queue: drains batches
- Event worker → User-agent parser: parses agent
- Event worker → Geo lookup: looks up location
- Geo lookup → Geo service: requests location
- Event worker → Live analytics: updates dimensions
- Live analytics → Redis: stores counters
- Event worker → Click history: persists events
- Click history → PostgreSQL: stores history
- API queries → Analytics endpoints: requests analytics
- Analytics endpoints → Analytics queries: queries reports
- Analytics queries → Live analytics: reads live data
- Analytics queries → Click history: reads history
- API queries → Preview and QR: requests preview
- Preview and QR → Preview service: gets preview or QR
- Preview service → URL records: loads mapping
- Preview service → User records: loads public links
- API queries → Profile endpoints: requests bio
- Profile endpoints → User service: loads profile
- User service → User records: reads and updates
- API queries → Auth endpoints: authenticates
- Auth endpoints → Authentication: handles account
- Authentication → JWT handling: issues access token
- Authentication → Refresh tokens: rotates tokens
- Authentication → User records: reads and saves user
- Rate limiting → Redis: consumes buckets
- API queries → Billing endpoints: starts billing