Proyecto personal · Herramienta web

django-url-shortener

Un acortador de URLs ágil y optimizado para funcionar sin servidores en Vercel. Redirige a los usuarios en milisegundos gracias a su sistema de caché, validando cada enlace y protegiendo el sitio contra peticiones masivas.

Django 5.2Python 3.11HTMX 2.0.4Tailwind CSS 3PostgreSQL (Neon)SQLiteRedis / Django CacheHuskyLint-stagedPrettier
django-url-shortener — vista principal
<50ms de latencia al redirigir
0 consultas a base de datos por click
10 req/min límite inteligente de peticiones
100% validación de enlaces seguros

El reto

Muchos acortadores de URLs tradicionales van muy lentos porque tienen que preguntar a la base de datos en cada click. Esto no sólo tarda más, sino que puede saturar el servidor si de repente entra mucha gente. Mi meta era crear un acortador súper rápido que enviara a los usuarios a su destino en menos de 50 milisegundos.

Además, tenía que asegurar que el sistema fuera seguro: evitar que bots maliciosos abusaran del servicio haciendo miles de peticiones seguidas, y asegurarme de que el acortador supiera de qué país o dirección IP real venía el usuario, algo que suele complicarse al publicar en plataformas en la nube.

Lo que hice

Redirecciones al instante con caché: Diseñé el sistema para que no tuviera que leer de la base de datos cada vez que alguien hace click en un enlace. Al acortar una URL, el enlace y su destino se guardan temporalmente en la memoria rápida (caché). Cuando alguien pincha en el enlace corto, se le redirige al momento. El contador de visitas se actualiza de forma silenciosa en segundo plano, logrando un rendimiento espectacular.

Protección inteligente contra abuso: Implementé un sistema que limita las peticiones por usuario. Si alguien intenta acortar demasiadas URLs en poco tiempo, el sistema lo frena temporalmente sin afectar a los demás. También añadí una validación muy fuerte para asegurarme de que sólo se puedan acortar enlaces reales y seguros.

Calidad y automatización en el desarrollo: Como desarrollador web, valoro mucho la agilidad y la calidad. Automaticé la revisión del código y del diseño visual antes de cada subida a producción, asegurando que el código de Django, los componentes dinámicos de HTMX y los estilos de Tailwind estuvieran perfectos y limpios.

django-url-shortener — captura secundaria 1
django-url-shortener — captura secundaria 2

Resultado

El acortador está en producción y funcionando de maravilla en acortador.moisesvalero.es. Redirige a los usuarios sin demoras y consume el mínimo de recursos. Es un ejemplo perfecto de cómo resolver un problema común (los clicks en enlaces) de forma elegante y optimizada.

Este proyecto demuestra mi enfoque práctico: combinar el poder de Django y Python para el backend con interfaces ligeras e interactivas creadas con HTMX y Tailwind CSS, apoyándome en herramientas de IA para construir de forma ágil y robusta.

Django 5.2Python 3.11HTMX 2.0.4Tailwind CSS 3PostgreSQL (Neon)SQLiteRedis / Django CacheHuskyLint-stagedPrettier