Respiración consciente guiada por geometría: una figura (de dos a seis lados) marca las fases inspira / aguanta / exhala. Se ajustan los segundos por lado, se editan ciclos libres (4-7-8, suspiro fisiológico…), se guardan patrones y se fijan rondas. Apoyos opcionales de sonido, vibración, pictogramas y voz. Pensado para bajar revoluciones al entrar en clase o después de la actividad física. Next.js, PWA, seis idiomas (es, gl, cat, eu, en, zh).
Sin cuenta, sin registro y sin analítica. Se abre y se respira.
Sitio: https://breath.edumind.es
- Respiración (portada, para todo el mundo): funciona entera en el navegador y sin conexión tras la primera visita (service worker). Guarda solo las preferencias (idioma, figura, segundos, apoyos, patrones con nombre, rondas) en
localStorage; botón «Borrar mis datos». No contacta con ningún servidor al abrir. - Zona con cuenta EDUmind (
/app, opcional, pensada para docentes): inicio de sesión OpenID Connect (Authentik). Programas guiados, favoritos, historial y perfil (objetivo, franja horaria, meta semanal, notas). El perfil se guarda en un fichero JSON en el servidor, cifrado en reposo (AES-256-GCM, clave derivada deAUTH_SECRET). Si dejas vacías las variablesAUTH_*, la app arranca sin esta zona. - Modo empotrado:
?embed=1máslados,segundos,patron,rondasyauto=1en la URL, para pizarras y otras apps. - Detalle completo en PRIVACIDAD.md. Material de terceros en CREDITS.md. Cambios por versión en CHANGELOG.md; por qué está hecho así en DECISIONES.md.
cp .env.example .env # opcional: vacío arranca sin inicio de sesión
npm install
npm run dev # http://localhost:3000
npm run build && npm startnpm run lint
npm test # vitest: 55 pruebas (secuencias de fases, resp/min, patrones)El CI de GitHub (.github/workflows/ci.yml) pasa lint, pruebas y compilación en cada PR. No despliega.
- Añadir un patrón con respaldo:
src/features/breathing/lib/patrones.ts, arrayPATRONES_GUIA(id, claves de nombre/descripción y pasos{ phase: "I" | "E" | "H", seconds }). Añade las dos claves de texto ensrc/lib/i18n.ts(interfazAppTranslationsy los seis idiomas). Las pruebas de__tests__/patrones.test.tscomprueban que ningún patrón supera el umbral de retención. - Añadir un idioma: en
src/lib/i18n.tsamplía el tipoLanguagey añade el bloque de traducciones; ensrc/features/breathing/lib/breathing.tssúmalo aLANGUAGE_OPTIONS; ensrc/features/breathing/hooks/useBreathingSession.tsañade su código BCP 47 aHTML_LANG; ensrc/lib/useBreathingFeedback.tsañade la voz del navegador aspeechLocaleMapy, si grabas clipsI.mp3,E.mp3,H.mp3enpublic/audio/<idioma>/, inclúyelo enCLIP_LANGS. - Añadir un programa de la zona con cuenta:
src/features/premium/data/programs.ts, arraypremiumPrograms(slug estable, textos,sessionParamscon los tiempos por fase). - Cambiar los pictogramas: sustituye
public/img/inspiro.png,exhalo.png,aguanta.png(500×500) y actualiza CREDITS.md y la atribución desrc/features/breathing/components/FaqDialog.tsxsi dejan de ser de ARASAAC. - Desactivar el inicio de sesión: deja vacías
AUTH_AUTHENTIK_ID,AUTH_AUTHENTIK_SECRETyAUTH_AUTHENTIK_ISSUER. - Estilo:
src/styles/lamina-v1.csses el canon compartido de EDUmind (no se edita); lo propio de GeoBreath va ensrc/app/globals.css. - Versión:
package.json, el pie ensrc/app/layout.tsxy la caché del service worker ensrc/app/sw/route.tsypublic/sw.js.
Este recurso se ha desarrollado con vibe coding con asistencia de IA (Claude Code y ChatGPT), según la política de IA de EDUmind. Lo que ha comprobado el autor:
- Los tiempos de los cuatro patrones con respaldo y de los programas (resonancia 5,5-5,5, caja 4-4-4-4, 4-7-8, suspiro fisiológico 2+1/6, coherencia 5-5) y la referencia de Balban et al. (2023), con DOI, en la ayuda y en
CREDITS.md. - Las 55 pruebas automáticas (
npm test) y el CI (lint, pruebas, compilación) en cada PR. - La revisión de licencias y del material de terceros (
CREDITS.md,OFL.txt). - Los textos que ve el alumnado en los seis idiomas (
src/lib/i18n.ts). - La ejecución en navegador de escritorio y móvil, incluido el manejo solo con teclado.
Se puede colaborar sin programar: contar cómo te ha ido en clase, reportar un fallo, revisar los textos o traducir. Todo el proyecto está en español. Empieza por CONTRIBUTING.md y el código de conducta.
¿Un fallo de seguridad? No abras un issue público: ver SECURITY.md.
Este repositorio es una release saneada para revisión y auditoría: no incluye secretos, configuración de despliegue ni datos de aula. Ver OPEN_SOURCE_RELEASE.md.
Licencia doble AGPL-3.0-or-later o EUPL-1.2, a elección de quien la reutilice. Ver LICENSE y NOTICE. Los pictogramas ARASAAC conservan su licencia CC BY-NC-SA (ver CREDITS.md).
EDUmind® es marca registrada en España (OEPM). El código es libre; la marca y los logotipos no se ceden con él — ver TRADEMARKS.md.
Por Luis Vilela Acuña · EDUmind® — maestro de Educación Física.