Skip to content

About

Base62 - Url Shortener

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

URL Shortener

Acortador de URLs


Arquitectura

Ver DESIGN.md para la documentación completa de decisiones de diseño.


Requisitos


Stack completo (Docker)

docker-compose up -d --build
Servicio Puerto Propósito
front 80 Frontend React (Vite + Nginx)
api 8080 API REST .NET
mongodb-main 27017 URL mappings + contador
mongodb-analytics 27018 Click events (Time Series)

Verificar:

docker-compose ps
# http://localhost        → frontend
# http://localhost:8080   → API directa

Solo back (API + MongoDB)

Requiere MongoDB corriendo en 27017 y 27018.

cd back
dotnet restore
dotnet build
dotnet run --project src/UrlShortener.Api --urls "http://localhost:8080"

Variables de entorno relevantes:

Variable Default
MongoDB__MainConnectionString mongodb://localhost:27017
MongoDB__AnalyticsConnectionString mongodb://localhost:27018
UrlShortener__BaseUrl http://localhost:8080
Cors__Origins__0 http://localhost

Solo front

Requiere el backend corriendo en http://localhost:8080.

cd front
npm install
npm run dev        # http://localhost:5173

La URL del back se configura en front/.env:

VITE_API_URL=http://localhost:8080

Tests

# Back (.NET) — 53 tests
cd back && dotnet test

# Front (Vite + Vitest) — 6 tests
cd front && npm test

Endpoints

Método Ruta Descripción
POST /api/v1/data/shorten Acorta una URL
GET /api/v1/{shortCode} Redirige a la URL original
GET /api/v1/urls Lista todas las URLs acortadas
GET /api/v1/{shortCode}/clicks Clicks por URL (con bucket)
GET /api/v1/analytics/top Top URLs más visitadas
GET /health Health check
GET /metrics Métricas Prometheus

Documentación interactiva

  • Scalar UI: http://localhost:8080/scalar/v1
  • OpenAPI JSON: http://localhost:8080/openapi/v1.json

Ejemplos de uso

# Acortar
curl -X POST http://localhost:8080/api/v1/data/shorten \
  -H "Content-Type: application/json" \
  -d '{"longUrl":"https://example.com/muy-larga-url"}'

# Redirigir
curl -v http://localhost:8080/api/v1/0000001

# Clicks (buckets diarios)
curl "http://localhost:8080/api/v1/0000001/clicks?bucket=day"

# Top URLs
curl "http://localhost:8080/api/v1/analytics/top?limit=10"

# Métricas
curl http://localhost:8080/metrics

Arquitectura

Ver DESIGN.md para documentación completa de decisiones de diseño.

dotnet test

Configuración vía variables de entorno

Variable Default Descripción
UrlShortener__BaseUrl http://localhost:8080 URL base para los short URLs
UrlShortener__RedirectType 301 Tipo de redirect: 301 (permanente) o 302 (temporal)
MongoDB__MainConnectionString mongodb://localhost:27017 Conexión a MongoDB principal
MongoDB__AnalyticsConnectionString mongodb://localhost:27018 Conexión a MongoDB de analytics

About

Base62 - Url Shortener

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages