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
7.5 KiB
7.5 KiB
🎉 Sprint 2 - Progreso Parcial: Landing Page y Animaciones
Fecha Inicio: 2026-02-01 Estado: 🚧 En Progreso (~70% Completado) Responsable: Data-Agent + UI-Agent
📊 Resumen Ejecutivo
El Sprint 2 - Identidad Phone-First y Onboarding ha avanzado significativamente. Se ha completado la implementación completa de la Landing Page con todas las animaciones, y el flujo de booking (frontend) está funcional.
✅ Completado
Landing Page (100%)
- ✅ Header con logo, menú responsive y CTA
- ✅ Hero Section con animaciones y estadísticas
- ✅ Sobre Mí con imagen y descripción
- ✅ Servicios (3 cards con iconos)
- ✅ Testimonios (carrusel animado auto-rotativo)
- ✅ Contacto (formulario + tarjetas de información)
- ✅ Footer con enlaces y redes sociales
Animaciones (100%)
- ✅ Instalación de Framer Motion 12.29.2
- ✅ Fade-in animations al scroll
- ✅ Micro-interacciones en botones y tarjetas
- ✅ Transiciones suaves entre secciones
- ✅ Carrusel con animación de deslizamiento
- ✅ Floating badges y elementos decorativos
Booking Flow Frontend (100%)
- ✅ Step 1: Phone input con validación
- ✅ Step 2: Registration form (nombre, email)
- ✅ Step 3: Crisis screening (pregunta de emergencia)
- ✅ Step 4: Calendar placeholder (coming soon)
- ✅ Step 5: Crisis protocol (información de emergencia)
- ✅ Progress indicator (1-2-3)
- ✅ Animaciones entre pasos (AnimatePresence)
- ✅ Retroceso entre pasos
Diseño y Responsive (100%)
- ✅ Paleta de colores Nano Banana aplicada
- ✅ Mobile-first responsive design
- ✅ Hamburger menu para móvil
- ✅ Ajustes de tipografía y espaciado
- ✅ Optimización para tablet y desktop
📂 Componentes Creados
Layout Components
src/components/layout/Header.tsx- Header responsive con menú móvilsrc/components/layout/Hero.tsx- Hero con estadísticas y imagensrc/components/layout/About.tsx- Sección sobre mísrc/components/layout/Services.tsx- Grid de serviciossrc/components/layout/Testimonials.tsx- Carrusel de testimoniossrc/components/layout/Booking.tsx- Flujo de agendamientosrc/components/layout/Contact.tsx- Formulario de contactosrc/components/layout/Footer.tsx- Footer con enlaces
UI Components
- Ya existentes desde Sprint 1:
- Button
- Input
- Card
🎨 Características Implementadas
Header
- Logo GW con enlace a inicio
- Menú responsive (desktop + móvil)
- Hamburger menu animado
- CTA "Agendar" con hover effect
- Transición de fondo al scroll
Hero
- Título elegante con tipografía Playfair Display
- Descripción y CTAs
- Estadísticas (10+ años, 500+ pacientes, 98% satisfacción)
- Imagen con efectos parallax
- Floating badge "24/7 Soporte Virtual"
- Scroll indicator animado
Sobre Mí
- Biografía personalizada
- Puntos clave con bullets
- CTA a servicios y contacto
- Imagen con decorative elements
Servicios
- 3 cards: Terapia Individual, Terapia de Pareja, Talleres y Grupos
- Iconos de Lucide React
- Hover effects con elevación
- Grid responsive (1 col móvil, 3 cols desktop)
Testimonios
- Carrusel con 3 testimonios
- Auto-rotación cada 6 segundos
- Navegación manual (flechas + dots)
- Animaciones de transición suaves
- Background con gradientes
Booking Flow
- Step 1: Phone input con validación regex
- Step 2: Registration form (nombre + email opcional)
- Step 3: Crisis screening
- Step 4: Calendar placeholder
- Step 5: Crisis protocol (911, línea de ayuda, contacto de confianza)
- Progress indicator visual
- Animaciones de entrada/salida entre pasos
- Botones de navegación (Continuar, Atrás)
Contacto
- Formulario con nombre, teléfono, mensaje
- Validación de campos
- Simulación de envío con loading state
- Mensaje de éxito
- 3 info cards: Ubicación, Horarios, Email
- CTA WhatsApp
Footer
- 3 columnas: About, Enlaces, Contacto
- Social media icons (Instagram, Facebook)
- Links legales (Privacidad, Términos)
- Copyright
⏳ Pendientes
Backend - Rate Limiting
- Implementar Redis rate limiter
- Rate limiting por IP
- Rate limiting por teléfono
- Middleware de protección
- Configuración de límites (100 req/15min)
Backend - Auth Flow
- API endpoint POST /api/patients/search
- API endpoint POST /api/patients/register
- Validación de formato de teléfono (backend)
- Búsqueda en SQLite con Prisma
- Lógica paciente nuevo vs existente
- Manejo de errores (400, 404, 409)
Optimización
- Migrar de
<img>a<Image />de Next.js - Validar Lighthouse score (>90)
- Comprimir imágenes (WebP)
- Lazy loading de imágenes
🎯 Criterios de Aceptación
| Criterio | Estado |
|---|---|
| Landing Page completa y responsive | ✅ |
| Rate limiting funciona con Redis | ⬜ |
| Formulario de teléfono valida formato (frontend) | ✅ |
| Animaciones Framer Motion implementadas | ✅ |
| Colores Nano Banana aplicados | ✅ |
| Mobile-first responsive | ✅ |
| Contacto funcional (simulado) | ✅ |
| No hay errores de consola | ✅ |
| Lighthouse score > 90 | ⬜ |
| Documentación actualizada | ✅ |
Progreso: 7/10 criterios cumplidos (70%)
📊 Métricas
- Componentes creados: 8
- Componentes reutilizables: 3 (Button, Input, Card)
- Secciones implementadas: 7
- Animaciones: 15+
- Responsive breakpoints: 3 (móvil, tablet, desktop)
- Peso build: ~145 kB (First Load JS)
🚀 Comandos
# Desarrollo
pnpm dev # Servidor en http://localhost:3000
# Código
pnpm typecheck # Verifica tipos (sin errores)
pnpm lint # ESLint (sin warnings)
pnpm build # Build de producción (exitoso)
🎨 Paleta de Colores Aplicada
- Primary: #340649 (Deep Royal Purple) - Títulos, textos principales
- Secondary: #67486A (Muted Lavender) - Textos secundarios, fondos de cards
- Background: #F9F6E9 (Soft Cream) - Fondo general
- Accent: #C8A668 (Muted Gold) - Botones, iconos, highlights
📝 Notas Técnicas
- Framer Motion: Utilizado para todas las animaciones con performance optimizado
- Responsive Design: Mobile-first con breakpoints en 768px (md) y 1024px (lg)
- Formularios: Simulación de envío con timeouts para demo UX
- Carrusel: Implementación personalizada con Framer Motion
- Icons: Lucide React para iconos SVG optimizados
⚠️ Advertencias
- Next.js 14.2.21 tiene vulnerabilidad conocida. Actualizar antes de producción.
- Images: Usando
<img>en lugar de<Image />de Next.js. Warnings en build. - Fonts: Warnings de conexión a fonts.googleapis.com durante build (no afecta funcionalidad).
- Booking Flow: Backend no conectado. Flujo puramente frontend.
🎯 Próximos Pasos
Inmediatos
- Implementar rate limiting con Redis
- Crear API endpoints para pacientes
- Conectar booking flow con backend
- Validar formato de teléfono backend
Siguientes
- Implementar calendario (Sprint 3)
- Integración Google Calendar API
- Recordatorios automáticos
- Sistema de roles y autenticación
Sprint 2 continúa en progreso... 🚧
Próximo milestone: Completar backend de rate limiting y auth flow.