Aplicación de escritorio 100% offline para intervención y rehabilitación cognitiva y del lenguaje. Diseñada para ofrecer una experiencia libre de sobrecarga cognitiva a los pacientes y garantizar la máxima privacidad de los datos clínicos.
| Componente | Tecnología |
|---|---|
| Lenguaje | Python 3.11+ |
| GUI | PyQt6 (modo claro/oscuro nativo) |
| Persistencia | SQLite local (preparado para migrar a pysqlcipher3) |
| Multimedia | Pygame (audio in-memory) + Pillow |
| Distribución | PyInstaller + Inno Setup ✅ |
margoth/
├── data/ # Base de datos SQLite local
├── assets/ # Estilos QSS y recursos UI
│ └── styles/
│ ├── light.qss
│ └── dark.qss
├── media/ # Fotos y audios locales de pacientes
├── src/
│ ├── main.py # Entry point
│ ├── models/ # Lógica de datos (BD y Cifrado)
│ ├── views/ # Componentes PyQt6
│ ├── controllers/ # Lógica de negocio
│ └── utils/ # Helpers (Gestor de temas, Audio, PathResolver)
├── build_exe.py # Script de compilación PyInstaller
├── margoth_installer.iss # Script de Inno Setup
├── requirements.txt
└── README.md
- Estructura de directorios MVC
- Entry point con PyQt6
- Toggle dark/light mode
- Estilos QSS accesibles
- Modelo de datos para pacientes
- Base SQLite cifrada (pysqlcipher3)
- Carga de medios (fotos/audios)
- Registro de pacientes
- Carga de material multimedia
- Navegación SPA entre vistas
- Tableros CAA (Comunicación Aumentativa y Alternativa)
- Ejercicios semánticos evolutivos
- Importación segura de medios por paciente
- Registro de medios en SQLite
- Interfaz de asignación de medios a grilla 2x2
- Persistencia de configuración en
caa_boards.json - Navegación limpia desde Dashboard
- Estímulo visual central con 3 opciones de respuesta
- Medición de tiempo de reacción con
time.perf_counter() - Registro de aciertos/fallos en tabla
exercise_metrics
- Helper de rutas
PathResolverpara modo dev/compilado - Script de build PyInstaller (
build_exe.py) - Script de Inno Setup (
margoth_installer.iss) - Verificación de creación de
data/ymedia/junto al binario - Validación de ejecución del ejecutable compilado (
Margoth.exe)
- Columna
labelenpatient_media(con migración idempotente) - El ejercicio semántico usa etiquetas legibles, no el nombre de archivo
- Campo de etiqueta al subir un medio
- Vista de reportes de progreso (aciertos, tiempos, tendencia diaria)
- Editar y eliminar pacientes (borrado en cascada de medios y métricas)
- Varios tableros por paciente (upsert por id, sin sobrescribir)
- Tamaño de grilla configurable (1..4 × 1..4)
- Selector de tablero en el constructor y en el visor
- Suite de pruebas de la capa de modelos (
pytest, 44 tests) - Integración continua en GitHub Actions
- Ícono propio de la aplicación (
assets/icon.ico)
Tras ejecutar Margoth.exe en dist/Margoth/:
dist/Margoth/
├── data/
│ └── margoth.db # BD creada automáticamente
├── media/ # Carpeta lista para multimedia
├── _internal/ # Dependencias empaquetadas
└── Margoth.exe # Binario aislado
El PathResolver confirma que las rutas se resuelven correctamente usando sys.executable como base en modo frozen.
Estas instrucciones son para el terapeuta que va a usar la aplicación. No necesitas instalar Python ni tener conexión a internet.
Requisitos: Windows 10 u 11 (64 bits).
- Consigue el archivo
Margoth_Setup.exe(te lo entrega quien distribuye la aplicación). - Haz doble clic en
Margoth_Setup.exe. - Si Windows muestra el aviso azul "Windows protegió tu PC" (aparece porque el instalador aún no está firmado digitalmente), haz clic en "Más información" y luego en "Ejecutar de todas formas".
- Sigue el asistente y pulsa Instalar. No pide permisos de administrador: se instala en tu carpeta de usuario.
- Al terminar, abre Margoth desde el acceso directo del Escritorio o del menú Inicio.
La primera vez que la abras, la aplicación crea sola sus carpetas de datos; no tienes que configurar nada.
Todo se guarda en tu equipo, en:
C:\Users\<tu-usuario>\AppData\Local\Margoth\
├── data\margoth.db # base de datos (pacientes, métricas)
└── media\ # fotos y audios de cada paciente
Respaldo: para tener una copia de seguridad, copia esa carpeta
Margotha un disco externo o a la nube de tu preferencia.
Ejecuta la versión nueva de Margoth_Setup.exe. Se instala sobre la anterior y
conserva tus datos.
Abre Configuración → Aplicaciones → Margoth → Desinstalar (o usa el acceso de desinstalación del menú Inicio).
Al desinstalar, tus datos (
data\ymedia\) NO se borran a propósito, para no perder información clínica. Si además quieres eliminarlos, borra a mano la carpetaC:\Users\<tu-usuario>\AppData\Local\Margoth.
pip install -r requirements.txt
python src/main.pypip install -r requirements-dev.txt
pytestLa capa de modelos se prueba headless (sin PyQt6). El mismo comando corre en CI (GitHub Actions) en cada push y pull request.
python tools/generate_icon.py # -> assets/icon.png y assets/icon.icopip install pyinstaller
python build_exe.pyEl ejecutable se generará en dist/Margoth/.
- Instalar Inno Setup.
- Abrir
margoth_installer.issen Inno Setup. - Compilar para obtener
dist/Margoth_Setup.exe.
- Cero sobrecarga cognitiva: Interfaces minimalistas para pacientes (Teoría de Mayer)
- Accesibilidad: Alto contraste, tipografías escalables (Segoe UI 12pt+)
- Privacidad: 100% offline. Los datos clínicos nunca salen del equipo (ver Seguridad y privacidad)
- Personalización: Soporte para fotos y audios del entorno del paciente
- Sin nube: la aplicación no consume ni expone ninguna API de red. Todos los datos (BD SQLite y medios) viven en el equipo del terapeuta.
- Aislamiento por paciente: los medios se guardan en carpetas separadas identificadas por UUID.
- Cifrado en reposo (pendiente): hoy la base de datos SQLite no está
cifrada. La migración a SQLCipher
(vía
pysqlcipher3) está planificada como mejora futura; se difirió porque requiere binarios nativos que complican el empaquetado con PyInstaller en Windows. Mientras tanto, la protección recae en el control de acceso del sistema operativo. No usar en un equipo compartido sin cuenta de usuario protegida.
- Carlos G - Creador y desarrollador principal
MIT