Servicio corporativo de acortador de enlaces reutilizable para todos los proyectos de la empresa.
- ✅ Generación de enlaces cortos - Crea URLs cortas corporativas a partir de URLs largas
- ✅ Reserva de enlaces - Reserva enlaces sin destino para QR impresos
- ✅ Gestión centralizada - Administra enlaces por proyecto con trazabilidad completa
- ✅ Estados configurables - ACTIVO, RESERVADO, DESHABILITADO, EXPIRADO
- ✅ Métricas básicas - Registro de clics y última visita
- ✅ API REST completa - Endpoints para crear, actualizar, listar y redirigir
- ✅ Autenticación segura - API Keys y Bearer Tokens
- ✅ Auditoría completa - Historial de cambios de estado y URL
- ✅ Documentación Swagger/OpenAPI 3.0 - Interfaz interactiva en
/api-docs - ✅ Base de datos con TypeORM - Persistencia con MySQL/MariaDB
npm install# Ejecutar migraciones
npm run migration:run
# Verificar estado
npm run migration:showCopia .env.example a .env y configura:
PORT=4300
SHORT_DOMAIN=http://localhost:4300/r
API_KEYS=tu-api-key-aqui
# Base de Datos
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=sdc
DB_PASSWORD=tu-password
DB_DATABASE=SDC_SHORT_LINKnpm run devnpm run build
npm startAbre tu navegador en: http://localhost:4300/api-docs
- Swagger UI - Documentación interactiva completa con pruebas en vivo
- OpenAPI 3.0 Spec - Especificación exportable
- API Reference - Resumen de endpoints y ejemplos rápidos
- Swagger Guide - Cómo usar la documentación interactiva
- API Testing - Colección de pruebas con curl/Postman
- TypeORM Guide - Entidades, repositorios, migraciones y queries
- Production Deployment - Guía completa para Ubuntu/Debian y CentOS/AlmaLinux
- Developer Guide (AGENTS.md) - Arquitectura, estándares y convenciones para desarrolladores/IA
POST /v1/short-links
X-API-Key: tu-api-key
{
"proyecto": "marketing-2025",
"creado_por": "admin@empresa.com",
"url_destino": "https://www.ejemplo.com"
}GET /v1/short-links?proyecto=marketing-2025&estado=ACTIVO
X-API-Key: tu-api-keyPATCH /v1/short-links/{id}
X-API-Key: tu-api-key
{
"actualizado_por": "admin@empresa.com",
"url_destino": "https://www.ejemplo.com/nuevo",
"estado": "ACTIVO"
}GET /r/{codigo}Crear un enlace corto que redirige a una URL específica:
- Marketing puede generar enlaces cortos para campañas
- URLs amigables para redes sociales
Reservar un enlace antes de imprimirlo en material físico:
- Crear enlace sin URL de destino
- Imprimir QR con el enlace corto
- Configurar URL de destino más tarde
- El QR sigue funcionando sin necesidad de reimprimir
Organizar enlaces por proyecto, módulo y etiquetas:
- Filtrar por campaña
- Ver métricas de uso
- Deshabilitar campañas vencidas
| Estado | Descripción | Comportamiento |
|---|---|---|
RESERVADO_SIN_DESTINO |
Enlace reservado sin URL | Redirige a página genérica |
ACTIVO |
Enlace activo | Redirige a URL configurada |
DESHABILITADO |
Enlace deshabilitado | Muestra mensaje de error |
EXPIRADO |
Enlace vencido | Muestra mensaje de expiración |
- Autenticación mediante API Key o Bearer Token
- Endpoints administrativos protegidos
- Endpoint de redirección público
- Auditoría completa de cambios
- Node.js + Express - Framework web
- TypeScript - Tipado estático
- Gemini AI - Integración opcional
- JWT - Autenticación (futuro)
npm run dev # Desarrollo con hot-reload
npm run build # Compilar TypeScript
npm start # Ejecutar en producción
npm test # Ejecutar testssrc/
├── config/ # Configuración
├── controllers/ # Lógica de negocio
│ └── shortlink.controller.ts
├── entity/ # Modelos de datos
│ └── ShortLink.entity.ts
├── middlewares/ # Middleware de autenticación
│ └── auth.middleware.ts
├── routes/ # Definición de rutas
│ ├── shortlink.route.ts
│ └── redirect.route.ts
├── utils/ # Utilidades
│ └── shortlink.utils.ts
└── index.ts # Punto de entrada
Ver Swagger UI para documentación interactiva completa.
docs/
├── 📖 API_SHORTLINK.md → Resumen rápido de la API
├── 🧪 API_TESTING.md → Guía de testing con ejemplos
├── 📚 SWAGGER.md → Cómo usar Swagger UI
├── 🗄️ DATABASE.md → TypeORM: entidades y repositorios
└── 🚀 DEPLOYMENT.md → Despliegue en producción
AGENTS.md → Guía para desarrolladores/IA
💡 Recomendación: Comienza por Swagger UI para explorar la API interactivamente.
Proyecto corporativo interno de SimpleData Corp.
Proceso:
- Crear branch desde
1-feature-base-acortador - Hacer cambios siguiendo AGENTS.md
- Crear Merge Request
- Revisión del equipo técnico
- Autor: Dey Gordillo
- Email: dey.gordillo@simpledatacorp.com
- Organización: SimpleData Corp
UNLICENSED - Uso corporativo interno exclusivo