web
La usuaria principal es la dueña del proyecto: lee sus propios libros en su máquina (escritorio/portátil), normalmente de noche y en sesiones largas de libros gordos (cientos de páginas). Audiencia futura confirmada como dirección: otros lectores que clonen el repo y monten su propia biblioteca local — nunca usuarios de un servicio alojado.
Athena es una app de lectura local-first para PDF y EPUB cuyo producto es la
última página: que los libros se terminen. Éxito = libros terminados
(readCount, finishedAt); el mecanismo diario que lleva ahí es el riel —
progreso con hitos, racha y ETA honesta a la última página — que te devuelve a
leer hoy. Terminar es la meta; el riel es el instrumento.
«Tu biblioteca nunca sale de tu máquina, y un solo instrumento honesto — el riel — te lleva a la última página; el teleprompter lee la página a ritmo, letra a letra.» Un lector vecino (Kindle, Calibre, Readwise) no puede copiar ambas cosas a la vez: cero cuentas/cero nube y la lectura como rito diario con ritmo propio.
- Lectura personal nocturna en escritorio; el tema oscuro (noche egea) es el default de la casa.
- Libros largos reales como banco de prueba: El mundo de Sofía (670 p), Don Quijote, Meditaciones.
- Desarrollo y uso en la misma máquina:
bun run deven :3000; la lectura funciona offline una vez instalada (internet solo para instalar, OCR inicial, buscador de portadas y diccionario). - Estado íntegro en
db/custom.db+public/uploads/: copiar esas dos rutas es una copia de seguridad completa.
- Capacidades: PDF digital y escaneado (OCR), EPUB reflow con páginas virtuales, modo texto de PDF (reflow + tipografías de lectura), teleprompter continuo, diccionario por selección, lectura dual sincronizada, inmersión, riel con hitos/racha/ETA, insignias, sesiones de lectura, interfaz es/en/pt.
- Restricciones vinculantes confirmadas: offline y local-first — la biblioteca y el progreso nunca salen de la máquina; no hay cuentas, ni nube, ni sincronización (para la excepción entre dispositivos propios, ver Enmienda 1).
- Stack existente (no negociable en la práctica): Bun, Next.js 16 + React 19 + TypeScript + Tailwind 4, Prisma + SQLite, PDF.js.
- Apertura decidida y hecha: repo público bajo licencia MIT (
LICENSE) — otros lo clonan, lo modifican y montan su propia biblioteca local. No se compromete demo alojada ni cuentas; cualquier feature que exija servidor contradice la restricción local-first.
- Nombre: Athena (sello propio
public/athena-seal.svg, logopublic/logo.svg). - Voz nacida en español: riel, insignias, «la casa de lectura»; los términos propios se traducen después (es/en/pt), nunca al revés.
- Decoración de la sala:
athena-capa2-fachada.pngyathena-capa2-busto.png(capa ambiental de la biblioteca). - Trato de «la casa»: la interfaz habla de estancias y objetos de lectura, no de «features» ni «ajustes de sistema».
- Libros reales de la dueña cargados en la biblioteca (Sofia, Quijote, Meditaciones, cuaderno escaneado).
- README en inglés con capturas vivas; documentación de uso en español bajo
docs/(INDICE.md+guias/) y reglas de la casa escritas. - Auditorías medibles: archivadas en el historial del repo (commit
b66f614:DESIGN.md,.impeccable/design.json,docs/auditoria-impeccable.mdy las baselines JSON antes/después); se retiraron del árbol en la limpieza de 2026-10-24 (commitad82e5e) y se pueden recuperar congit checkout b66f614 -- <ruta>. Contrastes AA+ verificados por script. - Ausencias que el trabajo futuro no debe inventar: no hay usuarias externas, testimonios, prensa ni métricas de adopción.
- La última página es el producto. Toda función existe para terminar el libro o para traerte de vuelta hoy; lo que no sirva a eso es ruido.
- Un instrumento, no un panel. El riel carga el progreso completo; sin gamificación de adorno ni tableros de métricas.
- Tu biblioteca es tuya. Local-first y offline son arquitectura, no un ajuste; ninguna función puede exigir la nube.
- El texto manda. En las superficies de lectura, la letra, el ritmo y la inmersión van antes que la decoración; la casa se nota en los detalles.
- Números honestos. Progreso, racha y ETA se calculan de lectura real, nunca inflados ni decorativos.
Se mantienen intactas la prohibición de nube, cuentas y telemetría, y el principio 3 («tu biblioteca es tuya»). Queda explícitamente permitida la sincronización directa entre los dispositivos de la dueña (Athena ↔ Athena) por red local o por fichero exportado/importado, entendida como una copia entre máquinas de la misma dueña: los datos siguen viviendo en cada dispositivo y jamás en servidores de terceros. Condiciones vinculantes para cualquier función de sync:
- Debe funcionar sin internet (LAN) y degradar en silencio si no hay pareja de sincronización: nunca bloquear la lectura.
- La copia es bidireccional bajo control de la dueña (elegir qué dispositivo manda), nunca automática en segundo plano sin consentimiento.
- No introduce cuentas: la confianza es «estar en la misma red de casa»,
igual que el modo
dev:lan/start:lanque ya existe.