NNicolas.dev
--:--:-- 2026.--.-—
NNicolas.dev
2026.--.-— 32°S 60°W · AR
2026 Open Source

Reading Tracker App

Sistema personal de lectura, 100% local

Reading Tracker App

Sobre el proyecto

App de escritorio open source (MIT) con arquitectura 100% local. Biblioteca, estadísticas, gamificación con 42 logros en 5 rarezas y 9 niveles, citas, audiolibros, documentos en Markdown y búsqueda global. Dataset de ejemplo incluido, cargable con un click.

El problema

Goodreads y StoryGraph resuelven el registro básico, pero las dos comparten el mismo defecto: piden una cuenta, mandan lo que anotás a un servidor de otra empresa, y en algún momento deciden qué hacer con esos datos. Un libro que terminé de leer no le pertenece a ninguna empresa — el registro de haberlo leído tampoco debería.

La solución

Herramienta de seguimiento de lectura que vive enteramente en la máquina del usuario. Sin login, sin telemetría, sin depender de que un tercero siga existiendo. El stack completo corre en local: React + Vite del lado del cliente, Node + Express + LowDB del lado del servidor. Todo guardado en un archivo JSON plano en disco.

Módulos

El sistema se organiza en superficies independientes, cada una resolviendo una parte del trabajo diario.

📚

Biblioteca

Portadas reales o generadas proceduralmente, vista grid / lista / estante, y filtros por estado, formato y tag.

📊

Estadísticas

Comparativa año a año, ritmo de lectura y fecha estimada de finalización calculada con el ritmo real.

🏆

Gamificación

XP, 9 niveles y 42 logros en 5 rarezas, con desafíos automáticos y personalizados. Sin rankings ni comparación social.

💬

Citas y notas

Registro de citas y notas por libro, con vista destacada de la última cita guardada en la ficha.

🎧

Audiolibros

Tratamiento diferenciado como tipo propio, no una casilla más dentro del formato genérico.

📄

Documentos Markdown

Escritura de documentos en Markdown con vista previa en tiempo real.

🔍

Búsqueda global

Atajo Ctrl+K que busca libros, citas, notas y documentos desde cualquier pantalla.

📖

Ficha contextual

Las acciones de cada libro cambian según su estado: registrar sesión si lo estás leyendo, calificación y ranking si lo terminaste.

Arquitectura

  • Arquitectura 100% local: React + Vite del lado del cliente, Node + Express + LowDB del lado del servidor, todo corriendo en la máquina del usuario.
  • LowDB guarda todo en un archivo JSON plano en disco — sin motor de base de datos separado, sin dependencias nativas que compilar, portable y legible con cualquier editor de texto.
  • Sin login, sin telemetría, sin nube: los datos no salen nunca de la máquina y no dependen de que un tercero siga existiendo.
  • Dataset de ejemplo cargable con un click, escrito desde cero, para evaluar el producto sin necesitar datos reales.

Proceso

  1. Definición de premisa y arquitectura: todo en local, sin login, sin telemetría, sin depender de infraestructura de terceros. LowDB guarda todo en un archivo JSON plano en disco — sin motor separado, sin dependencias nativas que compilar.
  2. Primera pasada de rediseño visual rechazada — el resultado era el típico dashboard oscuro con gradientes violeta que cualquier herramienta de IA produce por default. Se repitió el ciclo hasta que el sistema de diseño (paleta, tipografía, comportamiento del ícono central) tuvo identidad propia.
  3. Bugs reales encontrados en el camino: un selector de tipo de gráfico en Estadísticas que aparentaba funcionar pero siempre mostraba lo mismo; una violación de las reglas de Hooks de React visible en consola; colores de una paleta vieja escondidos en formato rgba() decimal, invisibles a cualquier búsqueda que solo revisara valores hex.
  4. Dos auditorías completas del proyecto — una técnica (bugs, imports muertos, consistencia de código) y una de diseño (páginas que seguían con el look viejo). La primera pasada fue superficial y se mandó a rehacer; la segunda encontró más de 100 inconsistencias reales repartidas en 20+ archivos.
  5. Diseño del sistema de gamificación: XP, 9 niveles, 42 logros automáticos en 5 rarezas, desafíos configurables — sin rankings, sin compartir, sin nadie mirando. El sistema hace visible un progreso que de otra forma sería invisible, no genera comparación.
  6. Separación de "mi instancia personal" del template descargable — al principio los ejemplos de la app eran mi biblioteca real, con títulos y citas propias. Separar ambas versiones fue su propia fase de trabajo, con un dataset de ejemplo escrito desde cero.

Lo que aprendí

Dirigir un rediseño completo con una herramienta de IA no reemplazó el criterio de diseño — lo puso a prueba constantemente. La parte más valiosa no fue la velocidad de generar código, sino sostener el estándar: rechazar lo genérico cuando aparecía, pedir profundidad cuando la primera respuesta era superficial, y verificar en vez de asumir que algo estaba bien solo porque compilaba.

Stack / Tools

ReactTypeScriptViteNode.jsExpressLowDBClaude
GitHub ↗

¿Algo similar en mente?

Hablemos ← Otros proyectos