Sprint 3 - Crisis y Agenda (100%): - Implement SMTP email service with nodemailer - Create email templates (reschedule, daily agenda, course inquiry) - Add appointment reschedule functionality with modal - Add Google Calendar updateEvent function - Create scheduled job for daily agenda email at 10 PM - Add manual trigger endpoint for testing Sprint 4 - Pagos y Roles (100%): - Add Payment proof upload with OCR (tesseract.js, pdf-parse) - Extract data from proofs (amount, date, reference, sender, bank) - Create PaymentUpload component with drag & drop - Add course contact form to /cursos page - Update Services button to navigate to /servicios - Add Reschedule button to Assistant and Therapist dashboards - Add PaymentUpload component to Assistant dashboard - Add eventId field to Appointment model - Add OCR-extracted fields to Payment model - Update Prisma schema and generate client - Create API endpoints for reschedule, upload-proof, courses contact - Create manual trigger endpoint for daily agenda job - Initialize daily agenda job in layout.tsx Dependencies added: - nodemailer, node-cron, tesseract.js, sharp, pdf-parse, @types/nodemailer Files created/modified: - src/infrastructure/email/smtp.ts - src/lib/email/templates/* - src/jobs/send-daily-agenda.ts - src/app/api/calendar/reschedule/route.ts - src/app/api/payments/upload-proof/route.ts - src/app/api/contact/courses/route.ts - src/app/api/jobs/trigger-agenda/route.ts - src/components/dashboard/RescheduleModal.tsx - src/components/dashboard/PaymentUpload.tsx - src/components/forms/CourseContactForm.tsx - src/app/dashboard/asistente/page.tsx (updated) - src/app/dashboard/terapeuta/page.tsx (updated) - src/app/cursos/page.tsx (updated) - src/components/layout/Services.tsx (updated) - src/infrastructure/external/calendar.ts (updated) - src/app/layout.tsx (updated) - prisma/schema.prisma (updated) - src/lib/validations.ts (updated) - src/lib/env.ts (updated) Tests: - TypeScript typecheck: No errors - ESLint: Only warnings (img tags, react-hooks) - Production build: Successful Documentation: - Updated CHANGELOG.md with Sprint 3/4 changes - Updated PROGRESS.md with 100% completion status - Updated TASKS.md with completed tasks
5.6 KiB
🧠 Gloria – Plataforma de Gestión Terapéutica
Sistema modular de alta gama para la gestión de pacientes, triaje de crisis y automatización de agenda terapéutica.
📖 Descripción General
Gloria es una solución digital diseñada para la terapeuta Gloria Niño. El sistema optimiza la interacción entre la terapeuta, su asistente y los pacientes mediante un enfoque phone-first (identificación vía WhatsApp) y una estética visual premium inspirada en el bienestar y la sanación integral.
🎨 Referencia Visual (Mockup)
Importante: Se ha creado un prototipo visual de alta fidelidad en la carpeta
mockup/. Este prototipo (index.html+styles.css) debe utilizarse como referencia estricta de diseño (colores, tipografía, espaciado, animaciones) para la implementación en Next.js. La carpetamockup/incluye una copia local de los assets enmockup/src/para ser totalmente autónoma.
Nota para Desarrollo
El código de producción se implementará en Next.js dentro de la carpeta src/. El mockup es un artefacto separado para aprobación de diseño.
🚀 Arquitectura del Sistema
El proyecto sigue una arquitectura de Monolito Modular, manteniendo simplicidad de despliegue en VPS sin sacrificar escalabilidad interna.
Tech Stack
Frontend
- Next.js 14 (App Router)
- Tailwind CSS
- Shadcn/ui (Radix UI based)
- TypeScript 5.x
Backend
- Next.js Server Actions
- API Routes
Base de Datos
- SQLite
- Prisma ORM
Caché y Estado
- Redis (sesiones y disponibilidad)
Integraciones
- Evolution API (WhatsApp)
- Google Calendar
Infraestructura
- Docker
- Docker Compose
- Hostinger VPS
Development
- Node.js 22.x
- pnpm (package manager)
- ESLint + Prettier
📂 Estructura de Carpetas
├── mockup # ⚠️ HTML/CSS de referencia visual (NO usar en producción)
│ ├── index.html # Prototipo estático del sitio
│ └── styles.css # Estilos de referencia
├── src
│ ├── app # Rutas, Layouts y Server Components
│ │ ├── (auth) # Flujo de identificación por teléfono
│ │ ├── (dashboard) # Paneles de Gloria y Asistente
│ │ └── api # Webhooks y endpoints
│ ├── components # UI Kit
│ ├── core # Casos de uso
│ ├── infrastructure # Adaptadores externos
│ └── lib # Utilidades
├── prisma # Esquema y migraciones
├── docker # Configuración Docker
└── scripts # Tareas programadas
Nota: La carpeta
mockup/contiene únicamente prototipos HTML/CSS estáticos para referencia visual durante el desarrollo. El código de producción se implementará en Next.js dentro desrc/.
🛠 Instalación y Configuración
Prerrequisitos
- Node.js 22.x
- pnpm (instalar con
npm install -g pnpm) - Docker & Docker Compose
- Instancia activa de Evolution API
Pasos de Configuración
1. Clonar Repositorio
git clone https://github.com/usuario/gloria-platform.git
cd gloria-platform
2. Instalar Dependencias
pnpm install
3. Variables de Entorno
cp .env.example .env
Configurar valores en .env.
4. Levantar Redis
docker compose up -d redis
5. Base de Datos
pnpm prisma db push
6. Ejecutar en Desarrollo
pnpm dev
El servidor estará disponible en http://localhost:3000
7. Build de Producción
pnpm build
🔐 Variables de Entorno
| Variable | Descripción |
|---|---|
| NODE_ENV | Environment (development/production) |
| DATABASE_URL | Ruta a la base SQLite |
| REDIS_URL | Conexión Redis |
| NEXTAUTH_SECRET | Secret para NextAuth |
| EVOLUTION_API_URL | URL de Evolution API |
| EVOLUTION_API_KEY | Token de WhatsApp API |
| EVOLUTION_INSTANCE_ID | ID de instancia WhatsApp |
| GOOGLE_CALENDAR_ID | ID del calendario principal |
| GOOGLE_CLIENT_ID | Client ID Google OAuth |
| GOOGLE_CLIENT_SECRET | Client Secret Google OAuth |
| WHATSAPP_PHONE_NUMBER | Número de WhatsApp de Gloria |
Ver .env.example para todas las variables disponibles.
🛡 Políticas de Datos y Privacidad
Notas Clínicas
- Encriptadas en reposo
- Acceso exclusivo rol Terapeuta
Audios
- Almacenamiento temporal
- Eliminación automática a 7 días
Identificación
- Sin contraseñas
- Validación vía WhatsApp + Redis
📚 Scripts Disponibles
pnpm dev # Inicia servidor de desarrollo
pnpm build # Build de producción
pnpm start # Inicia servidor de producción
pnpm lint # Ejecuta ESLint
pnpm typecheck # Ejecuta TypeScript checker
pnpm prisma:studio # Abre Prisma Studio
📊 Estado del Proyecto
Ver progreso detallado en:
- PROGRESS.md - Seguimiento por Sprint
- TASKS.md - Plan de ejecución
- CHANGELOG.md - Historial de cambios
Estado Actual: Sprint 1 - Cimientos e Infraestructura 🚧 En Progreso
🚢 Despliegue en Producción (Hostinger VPS)
Usar configuración optimizada:
docker-compose -f docker-compose.prod.yml up -d --build
Características:
- Auto-restart
- Persistencia de datos
- Volúmenes aislados
📌 Mantenimiento
- Limpieza automática de audios (
/scripts) - Backups periódicos de SQLite
- Rotación de logs Docker
📄 Licencia y Proyecto
Desarrollado para el proyecto:
Sanación Integral – Gloria Niño
Uso interno y confidencial.