Ilustración conceptual: la visualización de conexiones no forma parte de la beta actual.
App móvil minimalista de captura de notas y gestión del conocimiento personal.
Offline-first · Markdown · SQLite · Sin fricción.
lumapse-recorrido-general-v0.5.0.mp4
Un recorrido de un minuto por la captura y consulta de notas, la organización por materias, el calendario académico y los modos claro y oscuro.
![]() |
![]() |
![]() |
| Captura rápida | Materias y secciones | Calendario académico |
Lumapse es una aplicación móvil Android empaquetada con Capacitor, diseñada para que estudiantes de nivel superior puedan capturar, organizar y recuperar notas de estudio de forma rápida y offline-first.
Lumapse se enfoca en una fricción concreta: para parte del público relevado, las herramientas disponibles resultan demasiado complejas, dependen de una cuenta o no se adaptan bien al uso cotidiano con conectividad irregular. La beta se distribuye como APK Android, guarda los datos localmente con SQLite y prioriza los flujos sin conexión.
¿Por qué "Lumapse"? El nombre es un neologismo que fusiona Lumen (claridad, captura sin fricción) y Synapse (conexión, conocimiento interconectado). Leer la historia completa →
Nota sobre la arquitectura: Lumapse fue concebida inicialmente como una PWA. El relevamiento con 120 respuestas válidas respaldó las prioridades mobile-first y offline-first: el 72.5% eligió el celular y el 81.7% respondió “A veces”, “Raramente” o “Nunca” ante la pregunta por acceso estable a internet en el instituto. La encuesta no comparó PWA con APK. El empaquetado Android con Capacitor y la migración a SQLite se resolvieron mediante el análisis técnico documentado en ADR-005 y ADR-006.
| Capa | Tecnología | Motivo |
|---|---|---|
| Build | Vite 6 | Estándar de la industria, HMR, configuración mínima |
| Lenguaje | JavaScript (ES2022+) + TypeScript gradual | JS sigue siendo la base; TypeScript entra por contratos y módulos puros para mejorar mantenibilidad |
| Persistencia actual | SQLite (vía @capacitor-community/sqlite) |
Robusta, relacional, offline-first y alineada con ADR-006 |
| Simulación web SQLite | sql.js + jeep-sqlite |
Permite desarrollo y tests locales manteniendo el mismo modelo de datos |
| Empaquetado Android | Capacitor + Android | Distribuye la UI web en un contenedor Android híbrido y expone plugins nativos |
| Markdown | marked + DOMPurify |
Renderizado de texto enriquecido con sanitización XSS |
| Estilos | CSS nativo / Custom Properties | Sin dependencias externas, máximo control |
| Tests | Vitest | Suite unitaria implementada para servicios, store y componentes críticos |
| CI / Quality Gate | GitHub Actions + scripts locales | Lint, tests, build, bundle budget, trazabilidad, schema, DBML, links, jerarquía, a11y y guardia contra diálogos nativos |
| Control de versiones | Git + GitHub | Seguimiento del proyecto, GitHub Projects |
| Commits | Conventional Commits | Historial legible y estandarizado |
La beta controlada actual está publicada en GitHub Releases:
Descargar el asset firmado lumapse-v0.5.0.apk. No usar artefactos unsigned, que solo se conservan como evidencia técnica local.
v0.5.0 es la segunda beta firmada. Incorpora las correcciones de seguridad, integridad, coordinación SQLite, manejo de errores y usabilidad táctil desarrolladas y validadas después de v0.4.8.
SHA-256 del APK publicado:
d48338e04021a6096fcaeaced5fde411911d403c9ea95407891d2b034515a884
| Herramienta | Versión requerida | Verificar con |
|---|---|---|
| Node.js | v22.20.0 | node --version |
| npm | v10.9.3 | npm --version |
| Git | v2+ | git --version |
# 1. Clonar el repositorio
git clone https://github.com/jdfesa/lumapse.git
cd lumapse
# 2. Activar el entorno canónico (ejemplo con nvm ya instalado)
nvm install
nvm use
npm run check:runtime
# 3. Instalar exactamente las dependencias del lockfile
npm ci
# 4. Iniciar servidor de desarrollo
npm run dev
# 5. Verificar calidad antes de solicitar revisión
npm run verifyEl servidor corre en http://localhost:5173 con Hot Module Replacement activo.
La línea canónica es Node 22.20.0 con npm 10.9.3, fijada en .nvmrc, engines y packageManager, coincidente con la Mac utilizada para los gates de v0.5.0. check:runtime no necesita dependencias instaladas: el procedimiento y CI lo invocan antes de npm ci, y los lifecycles vuelven a comprobarlo al instalar, probar, desarrollar o compilar. Se puede usar otro gestor que respete esas versiones exactas; no se modifica el Node global automáticamente. Node 26 no está soportado y NODE_OPTIONS no forma parte del procedimiento canónico.
Para compilar el .apk con el corte actual se requiere Android Studio, JDK 21 y Android SDK 36.
La guía completa de instalación, dispositivos de prueba y flujo de trabajo está en:
lumapse/
├── src/ # Código fuente de la aplicación
│ ├── components/ # Componentes UI organizados por feature
│ │ ├── academic-events/ # Calendario, heatmap y fechas académicas
│ │ ├── about/ # Sección Acerca de
│ │ ├── backup/ # Vista UI del backup manual
│ │ ├── common/ # ConfirmDialog, Toast y piezas transversales
│ │ ├── feed/ # Listado, tarjetas, acciones y papelera
│ │ ├── markdown/ # Preview y estilos Markdown compartidos
│ │ └── note-editor/ # Editor, borradores, comandos y popups
│ ├── config/ # Metadatos/configuración de aplicación
│ ├── domain/ # Contratos y tipos de dominio
│ ├── layout/ # Shell, drawer y navegación
│ ├── services/ # Reglas, flujos, adaptadores y SQLite
│ ├── store/ # Estado de la aplicación (NoteStore)
│ ├── styles/ # CSS modular
│ └── main.js # Punto de entrada
├── android/ # Proyecto Android nativo (generado por Capacitor)
├── public/ # Assets estáticos
│ └── icons/ # Iconos de la aplicación
├── scripts/ # Scripts utilitarios y de automatización local
├── analisis-relevamiento/ # Análisis de datos del relevamiento (Python)
│ ├── datos/ # CSV con respuestas crudas
│ ├── scripts/ # Pipeline modular de análisis
│ └── graficos/ # Gráficos generados (12 archivos)
├── docs/ # Documentación del proyecto
│ ├── adr/ # Architecture Decision Records (9 ADRs)
│ ├── diagramas/ # Diagramas UML (Mermaid)
│ ├── gestion/ # Estimación, planificación y control de avance
│ ├── hitos/ # Informes de avance mensuales
│ ├── informe-final/ # Capítulos fuente del informe académico final (PP3)
│ ├── inspiracion/ # Benchmarking e ideas UX/UI externas
│ ├── producto/ # Design Thinking, requisitos, HU y encuesta
│ └── flujo-desarrollo-android.md # Guía operativa: build, deploy, scrcpy
├── .github/ # Automatización y templates de GitHub
│ ├── workflows/ # CI: Quality Gate en cada push/PR
│ ├── ISSUE_TEMPLATE/ # Templates para issues (features y bugs)
│ └── PULL_REQUEST_TEMPLATE.md
├── index.html # Punto de entrada HTML de la aplicación
├── capacitor.config.json # Configuración de Capacitor (appId, webDir)
├── vite.config.js # Configuración de Vite (build tool)
├── eslint.config.js # Configuración de ESLint (reglas de calidad)
├── package.json # Dependencias y scripts del proyecto
├── README.md # Documentación principal
├── CONTRIBUTING.md # Reglas de contribución, ramas y estándares
├── CHANGELOG.md # Registro histórico de cambios y versiones
├── BACKLOG.md # Deuda técnica y tareas pendientes por hacer
└── LICENSE # Licencia legal Copyleft (GNU GPLv3)
✅ Hito 00 — Investigación y Anteproyecto (Abril 2026) → Informe
Concepción del proyecto, investigación académica y diseño de los instrumentos de relevamiento.
- Inicialización del repositorio Git con identidad académica
- Anteproyecto formal para PP3
- Documentación de producto: personas, lean canvas (Design Thinking)
- Historias de usuario iniciales (HU-001 a HU-005)
- Diagramas UML: casos de uso, secuencia, modelo de dominio
- Plan de recolección de datos y metodología estadística
- Diseño y refinamiento de la encuesta de relevamiento
✅ Hito 01 — Fundación (Mayo 2026) → Informe
Establecer los cimientos técnicos, organizativos y de investigación del proyecto.
- Inicialización del repositorio Git con estructura profesional
- Configuración de Vite 6 como build tool
- Sistema de diseño base: design tokens, tipografía, paleta de colores
index.html— punto de entrada con meta tags y theme-colorsrc/main.js— bootstrap de la aplicaciónsrc/styles/main.css— estilos base con CSS Custom Properties- Architecture Decision Records: ADR-001 a ADR-004
- Documentación de producto: personas, requisitos funcionales y no funcionales, historias de usuario, Lean Canvas, análisis competitivo
- Relevamiento de datos: diseño de encuesta, metodología muestral, 121 respuestas recolectadas y 120 válidas
- Análisis cuantitativo y cualitativo de resultados (informe)
- Decisión de pivote de PWA a aplicación Android híbrida con Capacitor + SQLite (ADR-005)
✅ Hito 02 — Core del Editor (Junio 2026) → Informe
Construir el corazón funcional de la aplicación: editor de notas con persistencia local.
NoteService: capa de persistencia CRUD con IndexedDB (víaidb)NoteStore: gestor de estado reactivo (patrón Observer)- Componente
NoteList: barra lateral con listado de notas - Componente
NoteEditor: editor de título y contenido - Auto-guardado final del corte original, reemplazado después por borradores locales y confirmación explícita (
RF-005) - Eliminación de notas con confirmación de seguridad
Nota: Este hito se implementó con IndexedDB como capa de persistencia inicial. La migración a SQLite se ejecuta posteriormente durante el Hito 04, tras el pivote documentado en ADR-005 y formalizado técnicamente en ADR-006.
✅ Hito 03 — Markdown, Offline y MVP Inicial (Julio 2026) → Informe
Completar el producto mínimo viable de captura y lectura de notas con Markdown y funcionamiento offline.
- Renderizado de Markdown en tiempo real (
marked+DOMPurify) - Soporte de sintaxis: encabezados, negritas, listas, código, enlaces
- Modo edición / modo lectura (toggle)
- Servicios base de exportación/importación Markdown; la portabilidad verificable se separa luego entre nota individual futura y backups ZIP de workspace
- Funcionamiento offline bajo la arquitectura original PWA/IndexedDB
✅ Hito 04 — Organización y UX Móvil (Agosto 2026) → Informe
Implementar el modelo de organización respaldado por el relevamiento y optimizar la experiencia móvil.
- Integración Capacitor y generación del proyecto Android
- Migración de persistencia: IndexedDB → SQLite (
@capacitor-community/sqlite) - Estructura de navegación: Entrada / Materias / Archivo / Papelera
- Creación y edición de materias y secciones
- Asignación y movimiento de notas entre Entrada y Materias
- Archivado/restauración de materias y secciones con cascadas transaccionales
- Búsqueda por texto, modo claro/oscuro, focus mode y diálogos personalizados
- Empty states pulidos para feed, materias, búsqueda, archivo y fechas sin notas
- Cierre formal 2026-06-01: RF-006, RF-022, RF-024, coach marks y guía Markdown se postergan o descartan para MVP por decisión de diseño, evitando ruido visual y falsas expectativas de sincronización
- Tarea diferida para el cierre documental final: actualización de gráficos de base de datos
✅ Hito 05 — Testing, Calidad y Distribución (planificado para Septiembre 2026, cerrado) → Informe de cierre
Garantizó la calidad del código y preparó la primera distribución controlada del producto.
- Suite de tests unitarios con Vitest y quality gate local
- GitHub Actions
CI — Quality Gate - Smoke tests nativos Android bajo
com.lumapse.app - Borradores persistentes del editor para continuar notas tras cambiar de app o consultar PDFs (
RF-005) - Backup manual
.zipexterno con salida por share sheet/gestor de archivos (RF-017) - Importación de backup
.zipgenerado por Lumapse con preview y política no destructiva (RF-018) - Sección "Acerca de" con versión, autor, licencia y alcance offline/local (
RF-023) - Fechas académicas discretas integradas al calendario existente (
RF-027) - Editor enriquecido con slash commands, botón
+, formatoAa, callouts y modo enfoque dedicado (RF-028) - Validación inicial en Samsung Galaxy S20 FE con Android 13
- Generación, firma y publicación de
lumapse-v0.4.8.apk - Cierre sin bugs bloqueantes;
Mover ay rendimiento con más notas quedan como observaciones menores para la validación final
🔄 Hito 06 — Entrega Final (planificado para Octubre 2026, activo) → Informe inicial
Cerrar el proyecto con documentación coherente, evidencia final y presentación académica, sin ampliar el producto.
- Segunda beta
v0.5.0publicada con AUD-001 a AUD-007, mejoras táctiles y versionado Android0.5.0/500 - Revisión editorial y congelamiento de la documentación técnica y académica
- Gráficos de base de datos regenerados y verificados contra el schema real; resta validar su maquetación en PDF y diapositivas
- Quality gate del corte aprobado con 67 archivos y 1065 tests; resta completar la matriz RNF y la instalación manual del asset firmado cuando el dispositivo lo permita
- Decisión explícita sobre la línea base académica final: conservar
v0.5.0como referencia de defensa o publicar un corte estable posterior - Preparación de presentación, demo y respuestas para el tribunal evaluador
Nota sobre la planificación: Los meses asociados a cada hito constituyen estimaciones formuladas al inicio del proyecto. El desarrollo es iterativo: los plazos pueden ajustarse al profundizar la complejidad o aparecer hallazgos que cambian el alcance. El relevamiento por conveniencia aportó evidencia para priorizar móvil, offline y organización por materias; las decisiones de plataforma se justifican por separado en los ADR técnicos. El avance real se registra en los informes de hito, el Changelog y el historial de commits.
Paralelamente al desarrollo se realizó un relevamiento con potenciales usuarios para contrastar hipótesis y ajustar requisitos. La encuesta aporta evidencia declarativa; la validación directa del prototipo con usuarios permanece en Hito 06.
| Actividad | Estado | Documentación |
|---|---|---|
| Diseño de la encuesta | ✅ Completado | relevamiento-datos.md |
| Metodología muestral y cálculo de muestra | ✅ Completado | metodologia-muestral.md |
| Ejecución de la encuesta (recolección de respuestas) | ✅ Completado | encuesta/README.md |
| Análisis de resultados y conclusiones | ✅ Completado | resultados-relevamiento.md |
Nota: Los resultados de la encuesta retroalimentaron los requisitos funcionales y las prioridades del roadmap. Ver las conclusiones y recomendaciones para un resumen de los hallazgos principales.
- Portal documental — Jerarquía, fuentes canónicas y criterio editorial
- Informe final ensamblado — Checkpoint académico generado desde los capítulos fuente
- Hito 06 — Entrega Final — Alcance y criterios de cierre vigentes
- Plan de desarrollo inmediato de la beta — Propuesta para próximas sesiones, con evidencia y criterios de aceptación; pendiente de revisión por PR
- Cheat sheet de defensa — Métricas y respuestas verificables para la presentación
- Architecture Decision Records — Decisiones técnicas justificadas
- Diagramas UML — Casos de Uso, Secuencia, Modelo de Dominio (Mermaid)
- Informes de hito — Avance mensual del proyecto
- Documentación de producto — Personas, requisitos, historias de usuario, análisis competitivo, Lean Canvas (Design Thinking)
- Anteproyecto — Documento formal de definición
Lumapse sigue un enfoque ágil, iterativo e incremental, con gestión del flujo basada en Kanban adaptado a un proyecto individual. No se presenta como Scrum —no utiliza Sprints ni su conjunto completo de responsabilidades, eventos y artefactos— ni como RUP —no organiza el ciclo según sus fases y disciplinas—.
GitHub Projects visualiza el flujo:
Backlog → En Curso → En Revisión → Hecho
El WIP vigente es de dos elementos activos en total entre En Curso y En Revisión. Cada elemento debe tener objetivo, criterio de cierre y evidencia trazable; puede estar respaldado por un issue de GitHub, un ítem del proyecto o una tarea versionada. Los hitos son cortes académicos y de entrega, no Sprints. Ver ADR-003 y la Definition of Workflow.
El historial de commits sigue el estándar Conventional Commits.
- Materia: Prácticas Profesionalizantes III
- Alumno: Sandoval, José David Fernando
- Profesor: Ing. Parada, Mauricio
- Tutora: Prof. Jaquet, Melina Daiana
- Institución: IES 6023 'Dr. Alfredo Loutaif'
- Año: 2026
Desarrollado en el marco de la materia Prácticas Profesionalizantes III · IES 6023 'Dr. Alfredo Loutaif' · 2026



