Files
labiblioteca/README.md
2025-11-18 21:45:12 +01:00

224 líneas
6.9 KiB
Markdown

# 📚 La Biblioteca
**Visor de documentos EPUB accesibles desde IPFS**
Una aplicación web moderna para explorar y leer libros en formato EPUB almacenados en la red descentralizada IPFS. Desarrollada con React, ofrece una experiencia de lectura fluida con múltiples opciones de personalización y accesibilidad.
![React](https://img.shields.io/badge/React-19.0.0-61dafb?style=flat&logo=react)
![License](https://img.shields.io/badge/license-MIT-green)
![IPFS](https://img.shields.io/badge/IPFS-enabled-65c2cb?style=flat&logo=ipfs)
## ✨ Características
### 📖 Lectura
- **Visor EPUB integrado** con modo de scroll continuo
- **Tabla de contenidos** navegable
- **Control de tipografía** - ajusta el tamaño de fuente (50% - 200%)
- **Temas de lectura** - Claro, Sepia y Oscuro
- **Indicador de progreso** - muestra tu avance en tiempo real
- **Navegación intuitiva** - botones de anterior/siguiente página
### 🔍 Exploración
- **Buscador en tiempo real** - filtra por título instantáneamente
- **Paginación configurable** - 10, 50 o 100 libros por página
- **Catálogo completo** - acceso a toda la biblioteca IPFS
- **Selector de Gateway** - 9 gateways IPFS optimizados por velocidad
### 🌐 Compartir y Descargar
- **Enlaces directos** - comparte libros específicos con un solo clic
- **Descarga EPUB** - guarda libros localmente con su nombre original
- **URLs amigables** - enlaces permanentes a través de IPFS
- **Múltiples gateways** - resiliencia y velocidad
### ♿ Accesibilidad
- **WCAG 2.1 AA** - cumplimiento de estándares de accesibilidad
- **Navegación por teclado** - control completo sin ratón
- **Lectores de pantalla** - soporte ARIA completo
- **Skip links** - navegación rápida al contenido principal
- **Alto contraste** - mejores colores para legibilidad
- **Elementos semánticos** - HTML5 semántico correcto
## 🚀 Inicio Rápido
### Prerequisitos
- Node.js 16 o superior
- npm o yarn
### Instalación
```bash
# Clonar el repositorio
git clone https://git.manalejandro.com/ale/labiblioteca.git
cd labiblioteca
# Instalar dependencias
npm install
# Iniciar servidor de desarrollo
npm start
```
La aplicación se abrirá automáticamente en [http://localhost:3000](http://localhost:3000)
### Compilación para Producción
```bash
# Generar build optimizado
npm run build
# La carpeta 'build' contendrá los archivos listos para desplegar
```
## 📋 Uso
### Explorar el Catálogo
1. Al abrir la aplicación, verás el catálogo completo de libros
2. Usa el **buscador** para filtrar por título
3. Ajusta la **paginación** según tus preferencias
4. Cambia el **gateway IPFS** si experimentas lentitud
### Leer un Libro
1. Haz clic en cualquier libro del catálogo
2. El visor se abrirá con el libro cargado
3. Usa los controles de la cabecera para:
- 📥 **Descargar** el EPUB
- 🔗 **Compartir** el enlace directo
- 📑 **Ver la tabla de contenidos**
- ⚙️ **Ajustar configuración** (tema, tamaño de fuente)
4. Navega con los botones de anterior/siguiente o scroll
### Compartir un Libro
1. Abre el libro que quieres compartir
2. Haz clic en el botón de compartir (🔗)
3. El enlace se copiará automáticamente al portapapeles
4. Compártelo - cualquiera con el enlace podrá leer el libro
## 🏗️ Arquitectura del Proyecto
```
labiblioteca/
├── public/
│ ├── index.html # HTML principal con parches de accesibilidad
│ └── manifest.json # Configuración PWA
├── src/
│ ├── components/
│ │ ├── BookList.js # Lista y búsqueda de libros
│ │ ├── EpubViewer.js # Visor de EPUB
│ │ ├── ErrorBoundary.js # Captura de errores React
│ │ └── GatewaySelector.js # Selector de gateway IPFS
│ ├── styles/
│ │ ├── BookList.css
│ │ ├── EpubViewer.css
│ │ └── GatewaySelector.css
│ ├── utils/
│ │ └── ipfsParser.js # Parser del catálogo IPFS
│ ├── App.js # Componente principal
│ ├── App.css # Estilos globales
│ ├── index.js # Punto de entrada
│ └── setupErrorHandler.js # Manejo global de errores
├── package.json
└── README.md
```
## 🛠️ Tecnologías Utilizadas
- **React 19.0.0** - Framework de UI
- **epubjs** - Renderizado de archivos EPUB
- **react-icons** - Iconos de interfaz
- **IPFS** - Almacenamiento descentralizado
- **Create React App** - Configuración y build
## 🌍 Gateways IPFS
La aplicación soporta múltiples gateways IPFS para garantizar disponibilidad y velocidad:
1. EU Orbitor (Europa)
2. IPFS Orbitor (Global)
3. IPFS.io (Oficial)
4. Cloudflare IPFS (CDN)
5. Dweb.link (Oficial)
6. Pinata (Pinning service)
7. 4everland (Web3)
8. Gateway.pinata.cloud
9. NFT.storage
## 🔧 Configuración Avanzada
### Cambiar el Catálogo IPFS
Edita `src/utils/ipfsParser.js` y modifica la constante `IPFS_CATALOG_HASH`:
```javascript
const IPFS_CATALOG_HASH = 'QmTuHashDelCatalogo';
```
### Agregar Nuevos Gateways
En `src/utils/ipfsParser.js`, agrega nuevos gateways al array `IPFS_GATEWAYS`:
```javascript
export const IPFS_GATEWAYS = [
// ... gateways existentes
{ name: 'Mi Gateway', url: 'https://mi-gateway.com' }
];
```
## 🐛 Solución de Problemas
### Los libros no cargan
- Prueba cambiando el gateway IPFS
- Verifica tu conexión a internet
- Algunos gateways pueden estar temporalmente caídos
### Errores en el visor EPUB
- Los errores de ResizeObserver son normales y están silenciados
- Si el libro no se renderiza, intenta recargarlo
- Algunos EPUBs pueden tener formato incompatible
### El catálogo está vacío
- Verifica que el hash del catálogo IPFS sea correcto
- Prueba con diferentes gateways
- Revisa la consola del navegador para errores de red
## 🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor:
1. Fork el proyecto
2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`)
4. Push a la rama (`git push origin feature/AmazingFeature`)
5. Abre un Pull Request
## 📄 Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo `LICENSE` para más detalles.
## 👤 Autor
**Ale** - [git.manalejandro.com](https://git.manalejandro.com/ale)
## 🔗 Enlaces
- **Repositorio**: [https://git.manalejandro.com/ale/labiblioteca](https://git.manalejandro.com/ale/labiblioteca)
- **IPFS**: [https://ipfs.io](https://ipfs.io)
- **React**: [https://react.dev](https://react.dev)
- **Epub.js**: [https://github.com/futurepress/epub.js](https://github.com/futurepress/epub.js)
## 🙏 Agradecimientos
- A la comunidad de IPFS por la infraestructura descentralizada
- A los desarrolladores de Epub.js por el excelente visor
- A todos los contribuidores de bibliotecas de código abierto utilizadas
---
**⭐ Si este proyecto te resulta útil, considera darle una estrella en el repositorio**