# Product Requirements Document (PRD) – Plataforma Gloria **Versión:** 2.0 **Fecha:** 29 de Enero, 2026 **Stack:** Next.js 14, Prisma, SQLite, Redis, Evolution API --- ## 1. Visión del Producto Transformar la presencia digital de Gloria Niño en una herramienta operativa que centralice la atención, gestione crisis y automatice el agendamiento, manteniendo una estética de alta gama, calidez y profesionalismo. --- ## 2. Mapa del Sitio (Basado en Mockup) ### 2.1 Landing Page (Home) #### Header * Logo: GW * Menú: Inicio, Sobre mí, Servicios, Testimonios, Contacto * CTA: **Agendar Ahora** #### Hero Section * Imagen: Fotografía profesional de Gloria Niño * Titular: **Gloria Niño - Terapeuta Emocional** * Subtitular: Enfoque terapéutico personalizado * Botón principal: **Agenda tu Cita** (Inicia flujo) * Botón secundario: **Ver Servicios** #### Sección Biográfica * Imagen: Gloria Niño en sesión (jardín zen) * Texto: Biografía breve enfocada en duelo y ansiedad #### Servicios (Grid 3) * Terapia Individual * Terapia de Pareja * Talleres / Grupos #### Testimonios * Carrusel con citas, nombres y avatares #### Contacto * Formulario: Nombre, WhatsApp, Mensaje * Tarjetas: Ubicación y Horarios #### Footer * Redes sociales * Privacidad * Copyright --- ## 3. Requisitos Funcionales ### 3.1 Flujo de Agendamiento #### Paso 1: Identificación * Ingreso de WhatsApp * Búsqueda en SQLite * Cliente existente: mensaje personalizado + botones * Nuevo cliente: registro (Nombre, Edad, Motivo) #### Paso 2: Filtro de Crisis * Pregunta: ¿Es una urgencia? * Si: protocolo de crisis * No: calendario #### Paso 3: Disponibilidad * Integración Google Calendar * Caché Redis #### Paso 4: Pago * Carga de comprobante --- ### 3.2 Dashboard de Administración #### Rol: Asistente * Agenda general * Validación de pagos * Lista de pacientes * Sin acceso a notas clínicas #### Rol: Terapeuta (Gloria) * Expediente completo * Notas clínicas enriquecidas * Módulo de voz * Envío vía WhatsApp * Auto-eliminación (7 días) --- ## 4. Requisitos de Datos (Prisma) ```prisma model Patient { phone String @id name String birthdate DateTime status String createdAt DateTime @default(now()) } model Appointment { id Int @id @default(autoincrement()) date DateTime status String isCrisis Boolean paymentProofUrl String? } model ClinicalNote { id Int @id @default(autoincrement()) patientId String content String createdAt DateTime @default(now()) } model VoiceNote { id Int @id @default(autoincrement()) filename String duration Int sentAt DateTime expiresAt DateTime } ``` --- ## 5. Requisitos No Funcionales ### Hosting * VPS Hostinger * Docker Compose ### Optimización * Redis (sesiones y caché) ### Privacidad * Cookies banner * Aceptación T&C * Página estática ### Manejo de Archivos * Comprobantes: volumen local * Audios: temporales --- ## 6. Casos Borde * Citas para terceros * Cancelaciones tardías * Zonas horarias