A production-shaped link platform: 28 REST endpoints across 6 modules on a layered controller → service → repository architecture, paired with a 16-component Angular 20 SPA built on standalone components and signals.
- Auth internals. JWT with short-lived access tokens and rotating refresh tokens (SHA-256 hashed, httpOnly cookies); single-flight refresh stops stampedes when concurrent requests hit a 401 together.
- Privacy-preserving analytics. Salted SHA-256 IP hashes enriched with user-agent + GeoIP for device / browser / OS / country breakdowns — no raw IPs at rest.
- Hardened redirect path. Protocol allowlisting (blocks
javascript:/data:XSS), private-IP filtering for SSRF, a reserved-alias list, and IP + account-keyed rate limiting.
- TypeScript
- Express 5
- Prisma
- PostgreSQL
- Angular 20