Sistema web para gestión de sesiones de catequesis dirigidas a jóvenes de 12-13 años en preparación para el sacramento de la Confirmación.
- Gestión de Sesiones: Crear, editar, publicar y retirar sesiones de catequesis.
- Modo de Visibilidad: Controla qué sesiones son visibles para los usuarios (solo publicadas o también editadas).
- Modo de Solo Lectura: Deshabilita la edición y administración de sesiones.
- Generación de PDF y DOCX: Descarga sesiones en formato PDF y DOCX.
- Recursos de Catequesis: Acceso a fichas de personajes bíblicos y otros recursos.
- Autenticación Segura: Acceso de administrador protegido por contraseña.
- Sistema de Backup y Restauración: Scripts para crear y restaurar backups de los datos.
- Despliegue con Docker: Fácil de desplegar en cualquier sistema con Docker y Docker Compose.
- Frontend: Next.js, React, Tailwind CSS
- Backend: Next.js (API Routes), Node.js
- Base de Datos: Sistema de archivos (Markdown para sesiones, YAML para módulos)
- Generación de PDF: Gotenberg
- Generación de DOCX: docx
- Contenerización: Docker, Docker Compose
Confirmacion/
├── .env # Variables de entorno (crear a partir de web/.env.example)
├── data/ # Datos de la aplicación (sesiones, logs, etc.)
│ ├── content/ # Contenido de las sesiones (.md) y módulos (.yml)
│ ├── auth/ # Ficheros de autenticación
│ └── logs/ # Logs de la aplicación
├── docker-compose.yml # Orquestación de los servicios Docker
├── external/ # Submódulos Git
│ └── catequesis/ # Contenido de recursos de catequesis
├── scripts/ # Scripts de utilidad (PowerShell y Node.js)
├── web/ # Código fuente de la aplicación Next.js
└── README.md # Este archivo
El contenido de la catequesis se estructura en módulos y sesiones. Cada sesión es un fichero Markdown que sigue una plantilla estándar, con secciones para el objetivo, materiales, esquema de la sesión, evaluación y notas para el catequista. Para más detalles, consulta docs/Plantilla_Sesion_A4.md.
Además, el proyecto incluye un conjunto de fichas de personajes bíblicos que se gestionan como un submódulo Git en external/catequesis. Estas fichas están disponibles en la aplicación web y se pueden sincronizar con el comando npm run sync:catequesis.
- Docker y Docker Compose
- Git
- Node.js y npm (para desarrollo local y scripts)
-
Clonar el repositorio (incluyendo submódulos):
git clone --recurse-submodules <URL_DEL_REPOSITORIO> cd Confirmacion
-
Configurar variables de entorno: Crea un fichero
.enven la raíz del proyecto a partir deweb/.env.exampley ajústalo a tus necesidades.cp web/.env.example .env
Asegúrate de cambiar
ADMIN_PASSWORDyJWT_SECRETpor valores seguros. -
Sincronizar recursos de catequesis: Este comando copia el contenido del submódulo
external/catequesisal directorioweb/public/recursos/catequesispara que esté disponible en la aplicación web.npm install npm run sync:catequesis
docker-compose up -dLa aplicación estará disponible en http://localhost:3001.
Para trabajar en la aplicación en un entorno de desarrollo local:
-
Instalar dependencias:
cd web npm install -
Iniciar el servidor de desarrollo:
npm run dev
La aplicación estará disponible en http://localhost:3000.
- Login: Accede a
/loginpara iniciar sesión como administrador. - Dashboard: Una vez autenticado, serás redirigido a
/admin, donde podrás gestionar las sesiones.
npm run sync:catequesis: Sincroniza los recursos de catequesis.npm run test: Ejecuta los tests unitarios y de integración.npm run test:e2e: Ejecuta los tests end-to-end con Playwright.npm run hash:admin: Genera un hash de la contraseña de administrador.
El contenido de las sesiones se gestiona a través de ficheros Markdown en el directorio data/content/sessions. La estructura de los módulos se define en data/content/modules.yml.
Los recursos de catequesis (fichas de personajes, etc.) se gestionan en un repositorio Git separado y se incluyen como un submódulo Git en external/catequesis. Para actualizar estos recursos, ejecuta npm run sync:catequesis.
El proyecto incluye scripts de PowerShell para realizar backups y restaurar los datos de la aplicación. Los scripts se encuentran en el directorio scripts.
-
Crear un backup:
# Backup básico en carpeta ./backups/ .\scripts\backup.ps1 # Backup comprimido (recomendado para envío) .\scripts\backup.ps1 -Compress
-
Restaurar desde un backup:
# Desde directorio .\scripts\restore.ps1 -BackupPath "./backups/catequesis_backup_20241214_143022" # Desde archivo ZIP .\scripts\restore.ps1 -BackupPath "./backups/backup.zip"
-
Programar backups automáticos: Puedes programar backups automáticos utilizando Tareas Programadas en Windows o Cron en Linux/NAS.
Windows (Tarea Programada):
schtasks /create /tn "Backup Catequesis" /tr "powershell.exe -ExecutionPolicy Bypass -File C:\Proyectos\Confirmacion\scripts\backup.ps1 -Compress" /sc daily /st 02:00
Linux/NAS (Cron):
0 2 * * * cd /path/to/catequesis && pwsh ./scripts/backup.ps1 -Compress
Para más detalles, consulta la documentación en BACKUP_SISTEMA.md y BACKUP_SEGURO.md.
- Redes Docker: El servicio
gotenbergse ejecuta en una red interna sin acceso desde el exterior para minimizar la superficie de ataque. - Variables de Entorno: No incluyas secretos en el código fuente. Utiliza el fichero
.envpara gestionar las variables de entorno. - CI/CD: El workflow de integración continua incluye pasos para análisis de seguridad.
- Content Security Policy (CSP): La aplicación implementa una CSP restrictiva para prevenir ataques XSS. Para más detalles, consulta
web/docs/CSP_Configuration.md.
Para más información sobre la configuración de seguridad, consulta SECURITY-GOTENBERG.md y ci-security-workflow.yml.
La aplicación está construida con Next.js y utiliza el App Router. El contenido se carga desde ficheros Markdown y se renderiza en el servidor. La exportación a PDF se realiza con Playwright y Gotenberg, mientras que la exportación a DOCX utiliza la librería docx.
Para una descripción técnica más detallada, consulta docs/Especificaciones_Tecnicas_Completas.md.
El método de despliegue recomendado es a través de Docker Compose. Asegúrate de que el entorno de producción esté correctamente configurado y de que los puertos necesarios estén disponibles.
Para más detalles sobre el despliegue en un NAS, consulta DESPLIEGUE_NAS.md.
El README.md original contiene una sección detallada de solución de problemas. Si encuentras algún problema, por favor, consúltala.