mirror of
https://github.com/marcogll/gloria_app.git
synced 2026-03-15 11:24:43 +00:00
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
251 lines
5.6 KiB
Markdown
251 lines
5.6 KiB
Markdown
# 🧠 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
|
||
|
||
```bash
|
||
├── 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
|
||
|
||
```bash
|
||
git clone https://github.com/usuario/gloria-platform.git
|
||
cd gloria-platform
|
||
```
|
||
|
||
#### 2. Instalar Dependencias
|
||
|
||
```bash
|
||
pnpm install
|
||
```
|
||
|
||
#### 3. Variables de Entorno
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Configurar valores en `.env`.
|
||
|
||
#### 4. Levantar Redis
|
||
|
||
```bash
|
||
docker compose up -d redis
|
||
```
|
||
|
||
#### 5. Base de Datos
|
||
|
||
```bash
|
||
pnpm prisma db push
|
||
```
|
||
|
||
#### 6. Ejecutar en Desarrollo
|
||
|
||
```bash
|
||
pnpm dev
|
||
```
|
||
|
||
El servidor estará disponible en http://localhost:3000
|
||
|
||
#### 7. Build de Producción
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
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](./PROGRESS.md)** - Seguimiento por Sprint
|
||
- **[TASKS.md](./TASKS.md)** - Plan de ejecución
|
||
- **[CHANGELOG.md](./CHANGELOG.md)** - Historial de cambios
|
||
|
||
**Estado Actual:** Sprint 1 - Cimientos e Infraestructura 🚧 En Progreso
|
||
|
||
---
|
||
|
||
## 🚢 Despliegue en Producción (Hostinger VPS)
|
||
|
||
Usar configuración optimizada:
|
||
|
||
```bash
|
||
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.
|
||
|