Una biblioteca retro con estilo Windows XP para compartir recursos, guías, herramientas y más.
- Busca por título, descripción, categoría o tags
- Presiona Enter o haz clic en "Search"
- Muestra mensaje cuando no hay resultados
- Guarda recursos en localStorage
- Botón "SAVE ⭐" cambia a "SAVED ✓" cuando está guardado
- Los favoritos persisten entre sesiones
Cada recurso puede ser:
- PDF 📄 - Documentos y guías
- LINK 🔗 - Enlaces externos
- DOWNLOAD 💾 - Archivos descargables
- VIDEO 🎥 - Videos y multimedia
- El reloj en el footer se actualiza cada segundo
- Formato 12 horas con AM/PM
- Validación de campos requeridos
- Validación de URLs
- Confirmación de envío
- Botón de cancelar funcional
- Sistema de notificaciones estilo Windows XP
- Aparecen en la esquina inferior derecha
- Se ocultan automáticamente después de 2 segundos
- Haz clic en las categorías del sidebar para filtrar
- Doble clic en el header del panel para mostrar todo
- Animaciones suaves al filtrar
Abre script.js y edita el array resourcesData:
const resourcesData = [
{
id: 7, // ID único
title: "Tu Recurso",
category: "Components", // Components, Terminals, Guides, Customization, Repositories, User Uploads
description: "Descripción detallada del recurso",
icon: "URL_del_icono", // URL de la imagen del icono
saves: 0, // Número inicial de guardados
type: "pdf", // pdf, link, download, video
url: "https://tu-url.com/recurso.pdf", // URL real del recurso
downloadSize: "2.5 MB", // Solo para type: "download"
tags: ["Tag1", "Tag2", "Tag3"], // Tags para búsqueda
author: "Tu Nombre",
date: "2024-12-07"
},
// ... más recursos
];Para una solución más robusta, puedes:
- Crear una API REST que devuelva los recursos
- Modificar script.js para cargar datos dinámicamente:
// Reemplaza el array resourcesData con:
let resourcesData = [];
async function loadResources() {
try {
const response = await fetch('https://tu-api.com/resources');
resourcesData = await response.json();
renderResources();
} catch (error) {
console.error('Error loading resources:', error);
}
}
// Llama a loadResources() al cargar la página
window.addEventListener('load', loadResources);- Crea un archivo
resources.json:
[
{
"id": 1,
"title": "Mi Recurso",
"category": "Guides",
"description": "Descripción",
"icon": "url_icono",
"saves": 0,
"type": "pdf",
"url": "https://ejemplo.com/archivo.pdf",
"tags": ["tutorial", "guía"],
"author": "Autor",
"date": "2024-12-07"
}
]- Carga el JSON en
script.js:
fetch('resources.json')
.then(response => response.json())
.then(data => {
resourcesData = data;
renderResources();
});{
type: "pdf",
url: "https://www.ejemplo.com/guia.pdf"
}{
type: "link",
url: "https://github.com/usuario/repositorio"
}{
type: "download",
url: "https://releases.ejemplo.com/archivo.zip",
downloadSize: "15.3 MB"
}{
type: "video",
url: "https://www.youtube.com/watch?v=VIDEO_ID"
}Edita las variables CSS en style.css:
:root {
--xp-blue: #003399;
--xp-light-blue: #6BA8FF;
/* ... más colores */
}- Agrega la categoría en el sidebar (HTML)
- Actualiza los filtros en
script.js - Agrega recursos con esa categoría
Usa iconos de:
- https://win98icons.alexmeub.com/
- O sube tus propios iconos
- ✅ Búsqueda en tiempo real
- ✅ Favoritos persistentes (localStorage)
- ✅ Filtros por categoría
- ✅ Ventanas arrastrables
- ✅ Efectos de sonido
- ✅ Animaciones suaves
- ✅ Reloj en tiempo real
- ✅ Validación de formularios
- ✅ Notificaciones
- ✅ Badges de tipo de recurso
- ✅ Responsive design
- ✅ Chrome/Edge
- ✅ Firefox
- ✅ Safari
- ✅ Móviles (responsive)
- Los navegadores bloquean audio automático
- El usuario debe interactuar primero con la página
- Verifica que localStorage esté habilitado
- Algunos navegadores en modo incógnito bloquean localStorage
- Asegúrate de que el array
resourcesDataesté correctamente definido - Verifica que los IDs sean únicos
Proyecto de código abierto. Úsalo libremente para tus proyectos.
¡Disfruta tu biblioteca retro! 🎮