Volver al portfolio

URL Shortener

Plataforma completa de acortamiento de URLs con analytics en tiempo real

Backend Frontend Analytics Real-time Microservice

Sistema de acortamiento de URLs con backend en Fastify, frontend en Next.js, y analytics avanzados. Incluye tracking de clicks con GeoIP, parsing de User-Agent, sistema de tiers, expiración lazy, y actualizaciones en tiempo real vía WebSocket.

9
Endpoints
3
Modelos
12
Migraciones

1. Arquitectura

Routes

Handlers HTTP con validación de schemas y rate limiting

Services

Lógica de negocio con generación de códigos, analytics y gestión de URLs

Database

Persistencia con Prisma ORM y PostgreSQL

2. Características

Core

Acortamiento de URLs

Generación de códigos únicos con nanoid y validación de URLs con normalización automática

Analytics Avanzados

Tracking de clicks con desglose por país, navegador, OS, dispositivo y referrer

Sistema de Tiers

Tiers free/premium con límites configurables de URLs por usuario

Expiración de URLs

URLs con fecha de expiración configurable y verificación lazy al acceder

Tiempo Real

WebSocket Real-time

Actualizaciones en tiempo real de clicks y analytics vía Socket.IO con rooms por URL

GeoIP Tracking

Geolocalización de clicks con base de datos MaxMind y cálculo de confianza

User-Agent Parsing

Extracción de navegador, OS y dispositivo con ua-parser-js

Frontend

Dashboard Interactivo

UI moderna con Next.js 16, React 19 y Tailwind CSS con diseño responsive

Visualización de Datos

Gráficos interactivos con Recharts mostrando analytics de clicks y distribución

API Client Generation

Generación automática de cliente API con Orval desde OpenAPI spec

Infraestructura

Observabilidad

Métricas Prometheus con contadores de URLs creadas, clicks y operaciones

Rate Limiting

Limitación de requests por usuario y endpoint con configuración granular

Production Ready

Docker multi-stage, health checks y configuración por entorno

3. Tech Stack

TypeScript
Fastify
Next.js
React
PostgreSQL
Docker
Prisma
Tailwind CSS
Socket.IO

4. API Reference

Módulo Endpoints
URLs 5
Usuario 4
Estadísticas 1
Health 2

5. Decisiones de Diseño

Fire-and-Forget Click Logging

El redirect 302 se devuelve inmediatamente sin esperar a que el click se persista. Esto mejora la latencia percibida y desacopla el tracking del redirect.

GeoIP con Score de Confianza

En lugar de confiar ciegamente en GeoIP, se calcula un score de confianza basado en la coincidencia entre GeoIP y el Accept-Language header.

Tier-based URL Limits

Los usuarios tienen un campo urlLimit configurable por tier. Free tier tiene límite de 50 URLs, premium es ilimitado.

Lazy Expiration

En lugar de un job que marque URLs como expiradas periódicamente, se verifica la expiración al acceder. Esto simplifica la arquitectura.

6.Sub-proyectos

URL Shortener Frontend

Frontend SPA

Dashboard de usuario con Next.js 16, React 19 y Tailwind CSS. Incluye listado de URLs, analytics con gráficos Recharts, y actualizaciones en tiempo real vía Socket.IO.

Next.js
React
Tailwind CSS
Socket.IO