Código fuente para el proyecto de chatbot médico IA de la Universidad Técnica de Babahoyo
| .claude | ||
| prisma | ||
| public | ||
| scripts | ||
| src | ||
| uploads/photos_profile | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| ecosystem.config.js | ||
| env.sample.txt | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| proxy.ts | ||
| README.md | ||
| tsconfig.json | ||
Ani Assistant
Plataforma de asistente médico virtual para la Universidad Técnica de Babahoyo (UTB). Sistema de gestión de citas, expedientes médicos, registro diario de salud y asistente virtual con IA para pacientes.
🚀 Características
- Roles de Usuario: ADMIN (gestión total), DOCTOR (pacientes, citas, expedientes), PATIENT (chat con IA, historial, citas)
- Chat inteligente con IA (OpenRouter via OpenAI SDK) en modalidades médica y psicológica
- Sistema de citas con calendario, videollamadas Jitsi y notas de consulta
- Registro diario de síntomas, estado de ánimo, energía y sueño
- Reportes médicos en PDF con generación automática desde chat
- Analíticas con gráficos (recharts) y dashboard
- Autenticación dual: API UTB (estudiantes) + base de datos local (doctores/admins)
- Tema claro/oscuro con Mantine
🛠 Tech Stack
| Capa | Tecnología |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Lenguaje | TypeScript 5 (strict) |
| UI | Mantine UI v9, @tabler/icons-react, Tailwind CSS |
| Base de Datos | PostgreSQL 14+ |
| ORM | Prisma 6 |
| Autenticación | NextAuth v4 (credentials, JWT) |
| AI Chat | OpenAI SDK + OpenRouter (deepseek) |
| @react-pdf/renderer, jspdf + html2canvas | |
| Gráficos | recharts |
| Fechas | date-fns, dayjs |
| Notificaciones | @mantine/notifications (sonner-style) |
| Video | Jitsi Meet |
📋 Prerrequisitos
- Node.js 18.18+
- PostgreSQL 14+
- npm
⚙️ Configuración de Entorno
-
Copia el archivo de ejemplo:
cp env.sample.txt .env -
Configura las variables críticas en
.env:DATABASE_URL: Cadena de conexión a PostgreSQLNEXTAUTH_SECRET: Cadena aleatoria para firmar JWTOPENROUTER_API_KEY: API Key para el chat de IAUTB_API_APP_IDyUTB_API_APP_TOKEN: Credenciales API UTB (autenticación externa)
💻 Desarrollo Local
-
Instalar dependencias:
npm install -
Configurar base de datos:
# Sincronizar esquema con la DB (solo desarrollo) npm run db:push # (Opcional) Crear usuarios de prueba npm run db:setup -
Iniciar servidor de desarrollo:
npm run devVisita
http://localhost:3000.
🚀 Producción
⚠️ IMPORTANTE: Sigue estos pasos para evitar pérdida de datos.
-
Instalar dependencias:
npm ci -
Migraciones de Base de Datos: En producción, NUNCA uses
db:push. Usamigrate deploy.npm run db:deploy -
Construir la aplicación:
npm run build -
Iniciar servidor:
npm start
📜 Scripts Disponibles
| Comando | Propósito |
|---|---|
npm run dev |
Entorno de desarrollo (Turbopack) |
npm run build |
Compilar para producción |
npm run start |
Iniciar servidor producción |
npm run lint |
ESLint |
npm run db:push |
Sincronizar esquema (dev rápido) |
npm run db:migrate |
Crear migración (dev) |
npm run db:deploy |
Aplicar migraciones (prod) |
npm run db:reset |
Resetear base de datos |
npm run db:studio |
Prisma Studio GUI |
npm run db:setup |
Seed interactivo / batch para crear usuarios |
npm run db:seed |
Alias de db:setup |
npm run check-env |
Validar variables de entorno |
npm run test:openrouter |
Probar conexión OpenRouter |
npm run test:api |
Probar endpoints de API |
npm run cleanup-images |
Normalizar imágenes de perfil |
npm run verify-setup |
Verificar directorios uploads |
⚠️ Disclaimer
Este software es para fines educativos y demostrativos. No debe ser utilizado como sustituto de consejo médico profesional, diagnóstico o tratamiento.