Acortador de enlaces minimalista construido con Astro v6, diseñado para ser desplegado en Cloudflare Workers/Pages utilizando Cloudflare D1 como base de datos.
- 🔒 Muro de Login: Acceso restringido mediante contraseña de administrador.
- 🔗 Slugs Personalizados: Elige el nombre final de tus enlaces.
- 📊 Gestión Completa: Panel para listar, borrar y ver tus enlaces.
- 📂 Importación/Exportación: Soporte para copias de seguridad en formato JSON.
- ⚡ Ultra Rápido: Ejecución en el "Edge" con Cloudflare Workers.
- 🎨 Diseño Moderno: Interfaz limpia inspirada en Shadcn/UI.
- Cuenta de Cloudflare.
- Node.js instalado (v20 o superior).
- Repositorio de GitHub configurado.
git clone https://github.com/tu-usuario/link.inled.es.git
cd link.inled.es
npm installDesde la terminal, utiliza wrangler para crear la base de datos:
npx wrangler d1 create link-dbCopia el database_id que aparecerá en pantalla y pégalo en el archivo wrangler.jsonc bajo la sección d1_databases.
Crea la tabla necesaria en tu nueva base de datos:
# Para producción (remoto)
npx wrangler d1 migrations apply link-db --remote
# Para desarrollo (local)
npx wrangler d1 migrations apply link-db --local- Contraseña de Administrador:
npx wrangler secret put ADMIN_PASSWORD
- Local: Crea un archivo
.dev.varscon:ADMIN_PASSWORD=tu_clave_local
- Sube tu código a GitHub.
- En el panel de Cloudflare, crea un nuevo proyecto de Pages conectado a tu repo.
- Build settings:
- Framework:
Astro - Build command:
npm run build - Output:
dist
- Framework:
- Vinculación D1:
- En el panel del proyecto ->
Settings->Functions->D1 database bindings. - Añade una vinculación: Variable
link_dbconectada a tu base de datoslink-db.
- En el panel del proyecto ->
- Variable de Entorno:
Settings->Environment variables.- Añade
ADMIN_PASSWORD(puedes usar el mismo valor que el secreto anterior).
Para ejecutar el proyecto localmente simulando el entorno de Cloudflare:
npx wrangler devAccede a http://localhost:8788.
Si deseas importar enlaces masivamente, el formato debe ser:
[
{ "slug": "github", "url": "https://github.com/inled" },
{ "slug": "web", "url": "https://inled.es" }
]Desarrollado con ❤️ por Jaime & Gemini CLI.