Watch
1
0
Fork
You've already forked BiblioHouse
0
Code Issues Pull requests Releases 12 Wiki Activity
⚠️ AVISO DE CIERRE: A partir del 1 de enero, forjalibre.eu dejará de estar disponible. Se recomienda migrar todos los proyectos y repositorios a otros servicios Git antes de esa fecha.
Gestor de biblioteca personal moderno desarrollado en JavaFX. Organiza tu colección, gestiona préstamos y visualiza estadísticas de lectura. 📚 https://bibliohouse.org
  • Java 83.4%
  • HTML 15.2%
  • CSS 1.2%
  • Python 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ferlagod b2d8dc02a8 fixed: revisión completa de rendimiento, seguridad, sincronización e interfaz
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)
2026-11-01 12:57:28 +01:00
scripts feat: Se corrige sincronización con Nextclaud, se prepara la app para nueva versión. 2026-05-08 16:28:35 +02:00
src fixed: revisión completa de rendimiento, seguridad, sincronización e interfaz 2026-11-01 12:57:28 +01:00
.gitignore feat: se añade compatibilidad con libros digitales (epub, pdf y mobi). Podrás arrastrar un EPUB a la aplicación, que BiblioHouse extraiga automáticamente la portada y los metadatos, y añadir un botón de "Leer" que abra el archivo con el lector por defecto del ordenador. 2026-06-13 14:35:38 +02:00
config.properties.example Added: Se agregó compatibilidad total con la sincronización de NextCloud a BiblioHouse. Esta función permite a los usuarios cargar sus archivos de base de datos JSON locales a un servidor de NextCloud y restaurarlos desde allí. 2026-03-01 16:17:40 +01:00
LICENSE Initial commit 2026-01-06 19:33:56 +01:00
LICENSE.txt refactor: modernizar arquitectura, rendimiento, seguridad y empaquetado del sistema 2026-09-21 17:01:48 +02:00
pom.xml fixed: revisión completa de rendimiento, seguridad, sincronización e interfaz 2026-11-01 12:57:28 +01:00
README.md chore: nueva versión 2.2 2026-10-04 17:09:59 +02:00

BiblioHouse Logo BiblioHouse

Version: 2.2.0 Java 21 JavaFX 21.0.5 Tests License: GPL v3 Open Source

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.json para 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
Inicio Catálogo
Lector Digital EPUB Edición y Ficha de Libro
Visor Edición
Configuración y Nube Manual de Usuario Integrado
Configuración Manual

🚀 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

  1. Clona el repositorio:

    git clone https://forjalibre.eu/ferlagod/BiblioHouse.git
    cd BiblioHouse
    
  2. Compila el proyecto y ejecuta la suite de pruebas:

    mvn clean test
    
  3. 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: Apóyame en Liberapay

Desarrollado con ❤️ y pasión por la lectura por Fernando Lago Dávila (ferlagod).