El problema de producto
Un PDF conserva la composición de una página impresa, pero no siempre ofrece una experiencia cómoda para leer una novela durante horas. Lector reconstruye la prosa sin perder el vínculo con el documento original y mantiene biblioteca, notas y progreso en el equipo del usuario.
Una arquitectura alrededor de la continuidad
- Ingesta separada de la lectura: PDF.js extrae el documento; el pipeline analiza líneas, columnas, párrafos y capítulos antes de producir un modelo de lectura.
- Posición estable: el progreso se ancla a un offset de texto. Cambiar tamaño de letra, presentación o modo de lectura no debería cambiar el lugar donde se quedó el usuario.
- Límites explícitos en Electron: el renderer accede al sistema mediante un preload mínimo y operaciones IPC validadas en el proceso principal.
- Persistencia recuperable: escrituras JSON atómicas, colas por ruta y validación de los datos. El PDF original sigue siendo la fuente de verdad; el texto procesado es una caché reconstruible.
Procesamiento local y tareas de fondo
OCR, búsqueda, diccionario y voz funcionan localmente. Las tareas por libro usan tokens de sesión y cancelación para descartar resultados tardíos después de abrir otro documento. Esta decisión evita que una operación de fondo actualice el libro equivocado.
Verificación y estado
El repositorio incluye pruebas de contratos, fixtures de extracción y recorridos Electron para lectura, persistencia y experiencia visual. La distribución de Windows es una vista previa pública, no una versión estable firmada. El alcance actual de escritorio es PDF.
La evolución hacia Android se desarrolla como otro producto, con Kotlin, Jetpack Compose y soporte PDF/EPUB mediante Readium. La aplicación Android todavía no está publicada en Google Play. Su existencia muestra la evolución del proyecto; no implica que el escritorio ya soporte EPUB ni que todas las plataformas estén publicadas.
Qué demuestra este proyecto
Diseñar un producto también es resolver qué ocurre al cerrar durante una escritura, cambiar de libro durante un OCR o reabrir datos dañados. Lector concentra mi trabajo en arquitectura, privacidad y continuidad de la experiencia, además de la interfaz.