Files
gloria_app/README.md
Marco Gallegos 423f96022a feat: Complete Sprints 3 & 4 - Email, Reschedule, OCR, Upload, Contact Forms
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
2026-02-02 20:45:32 -06:00

5.6 KiB
Raw Permalink Blame History

🧠 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 carpeta mockup/ incluye una copia local de los assets en mockup/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 de src/.


🛠 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:

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.