How vimaneti-ai/ai-url-shortener works
This is a full-stack URL shortener: users create, manage, and inspect short links in an Angular UI, while visitors resolve codes through a redirect endpoint. The documented runtime also includes cached lookups, asynchronous click-event persistence and geolocation, expiry cleanup, rate limiting, and internal metrics. The README provides the redirect/Kafka flow; sampled frontend code confirms the UI-to-API calls. Backend details not sampled are included only where README capabilities or documented architecture support them.
Main entry points: urlController.java URL controller · UrlService.java URL service · ClickEventConsumer.java Click consumer · UrlRepository.java URL repository
Components 20
Web interface
- Angular app
frontend/src/app/app.component.ts - API client
frontend/src/app/services/api.service.ts
Link operations
- URL controller
src/main/java/com/example/URLShortener/controllers/urlController.java - URL service
src/main/java/com/example/URLShortener/services/UrlService.java - URL validation
src/main/java/com/example/URLShortener/validation/HttpUrlValidator.java - Base62 codes
src/main/java/com/example/URLShortener/services/Base62Encoder.java - URL repository
src/main/java/com/example/URLShortener/repository/UrlRepository.java - Expiry cleanup
src/main/java/com/example/URLShortener/services/CleanupService.java
Click analytics
- Kafka events
src/main/java/com/example/URLShortener/config/KafkaConfig.java - Click consumer
src/main/java/com/example/URLShortener/services/ClickEventConsumer.java - GeoIP lookup
src/main/java/com/example/URLShortener/services/GeoIpService.java - Analytics service
src/main/java/com/example/URLShortener/services/AnalyticsService.java - Click repository
src/main/java/com/example/URLShortener/repository/ClickEventRepository.java
Runtime infrastructure
- Redis cache
- PostgreSQL
- Rate limiter
src/main/java/com/example/URLShortener/config/RateLimitFilter.java - Prometheus
monitoring/prometheus.yml - Grafana dashboard
monitoring/grafana/provisioning/dashboards/url-shortener.json
Other components
- Browser
- GeoIP provider
Connections 22
- Browser → Angular app: uses UI
- Angular app → API client: requests API
- API client → URL controller: calls endpoints
- Browser → URL controller: requests redirect
- Rate limiter → URL controller: filters requests
- URL controller → URL service: handles links
- URL service → URL validation: validates URL
- URL service → Base62 codes: generates code
- URL service → Redis cache: reads/writes
- URL service → URL repository: queries links
- URL repository → PostgreSQL: reads/writes
- URL controller → Kafka events: publishes clicks
- Kafka events → Click consumer: dispatches events
- Click consumer → GeoIP lookup: resolves visitor
- GeoIP lookup → GeoIP provider: queries location
- Click consumer → Click repository: persists events
- Click repository → PostgreSQL: writes events
- URL controller → Analytics service: requests analytics
- Analytics service → Click repository: queries clicks
- Expiry cleanup → URL repository: removes expired
- Expiry cleanup → Redis cache: clears entries
- Prometheus → Grafana dashboard: feeds dashboards