Un acortador de enlaces moderno y rápido construido con Next.js 15, NextAuth, Prisma y Redis.
- 🚀 Ultra rápido: Redirecciones instantáneas con cache Edge y Redis
- 🔐 Seguro: Autenticación OAuth con Google y GitHub
- ⏰ Enlaces con expiración: Controla cuándo expiran tus enlaces
- 📊 Analytics: Estadísticas de visitas en tiempo real
- 📱 Códigos QR: Generación automática de códigos QR
- 🎨 Modal QR elegante: Visualización moderna de códigos QR
- 🌙 Modo oscuro: Tema claro/oscuro con persistencia por usuario
- ⌨️ Atajos de teclado: Ctrl+K para comandos rápidos, Enter para acciones
- 🔄 Cron jobs: Actualización automática de contadores
- 📝 Descripciones: Agrega descripciones a tus enlaces
- 🎯 Interfaz intuitiva: Diseño moderno y responsive
- Frontend: Next.js 15, React 19, Tailwind CSS
- Backend: Next.js API Routes, NextAuth
- Base de datos: PostgreSQL con Prisma ORM
- Cache: Redis (Upstash)
- Autenticación: Google OAuth, GitHub OAuth
- Despliegue: Vercel
- Node.js 18+
- PostgreSQL
- Redis (Upstash recomendado)
- Clona el repositorio
git clone https://github.com/tu-usuario/link-shortener.git
cd link-shortener- Instala las dependencias
npm install- Configura las variables de entorno
cp .env.example .env.localEdita .env.local con tus credenciales:
# Base de datos
DATABASE_URL="postgresql://usuario:password@localhost:5432/link_shortener"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="tu-secret-key"
# Google OAuth
GOOGLE_CLIENT_ID="tu-google-client-id"
GOOGLE_CLIENT_SECRET="tu-google-client-secret"
# GitHub OAuth
GITHUB_CLIENT_ID="tu-github-client-id"
GITHUB_CLIENT_SECRET="tu-github-client-secret"
# Redis
UPSTASH_REDIS_REST_URL="https://tu-redis-url.upstash.io"
UPSTASH_REDIS_REST_TOKEN="tu-redis-token"
# Host público
NEXT_PUBLIC_BASE_HOST="localhost:3000"- Configura la base de datos
npx prisma migrate dev
npx prisma generate- Ejecuta el servidor de desarrollo
npm run devAbre http://localhost:3000 en tu navegador.
npm run dev # Servidor de desarrollo
npm run build # Build para producción
npm run start # Servidor de producción
npm run lint # Linter- Inicia sesión con Google o GitHub
- Crea enlaces cortos con slugs personalizados
- Agrega descripciones opcionales a tus enlaces
- Configura expiración opcional para tus enlaces
- Visualiza estadísticas de visitas en tiempo real
- Genera códigos QR para compartir fácilmente
- Usa atajos de teclado: Ctrl+K para comandos rápidos
- Cambia el tema: Modo claro/oscuro según tu preferencia
- Ve a Google Cloud Console
- Crea un proyecto y habilita Google+ API
- Crea credenciales OAuth 2.0
- Agrega
http://localhost:3000/api/auth/callback/googlecomo redirect URI
- Ve a GitHub Settings > Developer settings > OAuth Apps
- Crea una nueva OAuth App
- Agrega
http://localhost:3000/api/auth/callback/githubcomo Authorization callback URL
Consulta la guía completa de despliegue para instrucciones detalladas.
Pasos rápidos:
- Conecta tu repositorio a Vercel
- Configura las variables de entorno
- ¡Despliega!
src/
├── app/
│ ├── api/ # API Routes
│ ├── dashboard/ # Dashboard de usuario
│ ├── login/ # Página de login
│ └── page.tsx # Página principal
├── components/ # Componentes React
├── lib/ # Utilidades y configuración
└── middleware.ts # Middleware de redirección
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- Next.js - Framework de React
- Prisma - ORM para TypeScript
- NextAuth - Autenticación para Next.js
- Upstash - Redis serverless
- Tailwind CSS - Framework CSS