- Java 83.4%
- HTML 15.2%
- CSS 1.2%
- Python 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Pérdida de datos - Se guardan los cambios pendientes al cerrar (menú y botón de la ventana) - Escritura en UTF-8 forzada a disco y preferencias guardadas de forma atómica - Se guarda el estado maximizado de la ventana, que nunca se persistía Sincronización NextCloud - Marcas de borrado (eliminados.json): lo borrado ya no reaparece - Socios y préstamos se fusionan elemento a elemento - La sincronización usa el mismo gestor de datos que la interfaz - Subida de ebooks por streaming y descargas atómicas Seguridad - Validación de nombres remotos (sin escritura fuera de la carpeta) - HTTPS obligatorio salvo en localhost real - Protección XXE y límites de lectura en EPUB - Ruta secreta y pool acotado en el servidor EPUB local - Puente JavaScript mínimo en el lector - Límites y validación en la descarga de portadas - El cifrado nunca guarda credenciales en claro ni usa claves adivinables Rendimiento y fluidez - Búsqueda con espera, sin tildes y reutilización de tarjetas - BCrypt fuera del hilo de la interfaz - Caché de paginación del lector EPUB - Se corrige la fuga del bus de eventos al cambiar de idioma - Apertura de archivos externos en segundo plano Interfaz y calidad - 228 textos traducidos a los seis idiomas, además de temas y densidades - Colores fijos sustituidos por variables del tema - Versión tomada solo del pom.xml - Se elimina javahelp, se usan logs en vez de consola y se borran archivos de prueba sueltos - Nuevos tests de regresión (TestMejorasRevision) |
||
| scripts | ||
| src | ||
| .gitignore | ||
| config.properties.example | ||
| LICENSE | ||
| LICENSE.txt | ||
| pom.xml | ||
| README.md | ||
BiblioHouse
BiblioHouse es un gestor de biblioteca personal moderno, ultrarrápido y de código abierto desarrollado en Java 21 y JavaFX. Diseñado específicamente para amantes de la lectura, investigadores y coleccionistas que exigen control absoluto sobre sus datos: todo se almacena y procesa localmente en tu equipo, garantizando la privacidad y soberanía digital de tu biblioteca.
✨ Características Principales
⚡ Productividad, Búsqueda y Accesibilidad (Novedades v2.2)
- Paleta de Comandos Universal (
Ctrl+K/Cmd+K): Acceso instantáneo flotante estilo Spotlight / Raycast para buscar libros por título, autor o género y ejecutar acciones directas desde cualquier lugar. - Accesibilidad Universal y Ergonomía Visual (WCAG AA/AAA): Selector dinámico de densidad y escala tipográfica (Compacto, Estándar, Grande / Accesible), temas oficiales de Alto Contraste Claro y Alto Contraste Oscuro, detección automática del tema del sistema operativo y navegación accesible por teclado en el catálogo.
- Notificaciones Nativas del Sistema: Avisos de escritorio integrados (macOS Notification Center, Windows Notifications y Linux libnotify) para alertar de préstamos vencidos y estado de sincronización.
- Atajos de Teclado y Menú Nativo macOS: Atajos universales estándar (
Cmd/Ctrl+K,Cmd/Ctrl+,,Cmd/Ctrl+N,Cmd/Ctrl+F,Cmd/Ctrl+L,Cmd/Ctrl+1..6) e integración plena con la barra superior del sistema en macOS.
📚 Catálogo, Organización y Lectura
- Cuadrícula Visual Interactiva y Paginación Fluida: Explora tus libros con portadas de alta calidad, insignias de estado y un sistema de virtualización/paginación configurable (24, 48, 96 o vista completa) para manejar colecciones de miles de ejemplares sin caídas de rendimiento.
- Lector Digital Integrado con Streaming Local: Lee tus archivos EPUB directamente dentro de la aplicación mediante un mini servidor HTTP loopback por bloques (streaming de 64 KB), eliminando bloqueos de pantalla y reduciendo el consumo de memoria en libros pesados o ilustrados.
- Extracción Local de Portadas de E-Books (Offline): Extracción automática local de portadas incrustadas en archivos EPUB y PDF (con Apache PDFBox) sin necesidad de conexión a internet.
- Seguimiento de Lectura (Reading Tracker): Visualiza barras de avance de páginas en cada tarjeta, actualiza tu progreso de lectura en tiempo real y guárdalo atómicamente con persistencia ligera sin reescribir toda la biblioteca.
- Reto Anual de Lectura: Configura tu objetivo de libros leídos para el año en curso y sigue tu porcentaje de avance con el widget reactivo renovado de la barra lateral.
- Gestor de Sagas y Series: Agrupa tus libros por series literarias y detecta visualmente las entregas faltantes para completar tus colecciones.
- Lista de Deseos (Wishlist): Gestiona tus futuras adquisiciones en un panel independiente que no altera las estadísticas de tu colección. Muévelos a tu estantería con un solo clic al comprarlos.
- Importación CSV Inteligente: Migra fácilmente tu biblioteca desde Goodreads o Bookwyrm, conservando calificaciones, fechas y estados de lectura.
🔍 Detección, Escáner y Metadatos
- Búsqueda Multifuente Concurrente: Consulta simultáneamente en OpenLibrary, Google Books e Inventaire para autocompletar portadas, sinopsis, géneros, autores y número de páginas.
- Escáner de Código de Barras a 30 FPS: Captura códigos ISBN en ráfaga usando tu cámara web con OpenCV y ZXing, optimizado para reutilizar búferes nativos y minimizar la presión sobre el recolector de basura.
- Búsqueda Asíncrona de Portadas: Búsqueda en segundo plano no bloqueante para encontrar portadas faltantes sin congelar la ventana.
- Drag & Drop de E-books y Portadas: Arrastra archivos EPUB, PDF o imágenes directamente sobre la ventana para importar libros o actualizar carátulas al instante.
🔒 Privacidad, Sincronización y Modo Offline
- Cifrado AES-256-GCM: Protección criptográfica con clave maestra de 256 bits, vector de inicialización (IV) aleatorio por operación y autenticación de integridad (AEAD) para tus credenciales de sincronización.
- Sincronización Bidireccional Automática al Iniciar: Comprueba cambios remotos en tu servidor NextCloud/WebDAV al arrancar la app y descarga novedades en segundo plano de forma silenciosa.
- Rutas Portables y Relativas: Almacenamiento agnóstico del sistema operativo en
biblioteca.jsonpara facilitar la migración entre macOS, Windows y Linux. - Portadas 100% Offline: Descarga y almacenamiento local de portadas para consultar tu catálogo con total normalidad sin conexión a internet.
🏷️ Préstamos, Socios y Exportación
- Gestión de Préstamos y Control de Devoluciones: Administra préstamos a socios con avisos automáticos de libros vencidos y registro histórico completo.
- Generación de Carnets y Etiquetas PDF: Imprime credenciales de socios con código de barras y genera etiquetas en PDF con Apache PDFBox y tipografías TrueType Unicode (Roboto).
- Exportación a Web y PDF: Exporta tu biblioteca completa como un catálogo interactivo HTML/CSS listo para publicar en la web o como informe PDF maquetado.
🌍 Idiomas y Compatibilidad
- Multi-idioma: Interfaz completa traducida a Español, Galego, Català, Euskara, English y Português.
- Multiplataforma: Totalmente compatible y optimizado para macOS (Apple Silicon e Intel), Windows 10/11 y Linux (Ubuntu, Debian, Fedora, Arch).
📷 Capturas de Pantalla
| Inicio | Pantalla Principal / Catálogo |
|---|---|
![]() |
![]() |
| Lector Digital EPUB | Edición y Ficha de Libro |
|---|---|
![]() |
![]() |
| Configuración y Nube | Manual de Usuario Integrado |
|---|---|
![]() |
![]() |
🚀 Instalación y Arranque
Requisitos Previos
- Java Development Kit (JDK) 21 o superior (Eclipse Temurin recomendado).
- Apache Maven 3.8+ instalado.
Compilar y Ejecutar en Modo Desarrollo
-
Clona el repositorio:
git clone https://forjalibre.eu/ferlagod/BiblioHouse.git cd BiblioHouse -
Compila el proyecto y ejecuta la suite de pruebas:
mvn clean test -
Inicia la aplicación:
mvn javafx:run
📦 Generación de Instaladores Nativos (jpackage)
BiblioHouse incluye configuración lista para generar instaladores independientes con JRE embebido mediante jpackage:
En macOS (genera archivo .dmg):
mvn clean package
mvn jpackage:jpackage
El instalador .dmg generado se encontrará en la carpeta target/dist/.
En Windows (genera instalador .exe o .msi):
mvn clean package
mvn jpackage:jpackage
🛠️ Tecnologías Utilizadas
| Componente | Tecnología |
|---|---|
| Lenguaje Core | Java 21 (LTS) |
| Interfaz Gráfica | JavaFX 21.0.5 + FXML + CSS |
| Captura y Escáner | OpenCV 4.9.0 + ZXing 3.5.3 |
| Persistencia | Gson 2.13.2 (JSON atómico debounced) |
| Documentos y Etiquetas | Apache PDFBox 3.0.4 + Roboto TrueType Fonts |
| Sincronización WebDAV | Sardine 5.10 |
| Pruebas Unitarias | JUnit 5 + Mockito 5.12 |
| Empaquetado Nativo | Maven Compiler Plugin 3.13.0 + JPackage Plugin |
📄 Licencia
Este proyecto es Software Libre publicado bajo los términos de la Licencia Pública General de GNU versión 3.0 (GNU GPL v3). Tienes la libertad de ejecutarlo, estudiar cómo funciona, adaptarlo a tus necesidades y redistribuirlo. Consulta el archivo LICENSE.txt para más información.
🌐 Web Oficial: ferlagod.eu
☕ Donaciones y Apoyo:
Desarrollado con ❤️ y pasión por la lectura por Fernando Lago Dávila (ferlagod).





