Asistente web para gestión inteligente de diabetes tipo 1, que integra datos de Monitoreo Continuo de Glucosa (CGM) y utiliza Inteligencia Artificial Generativa para generar reportes en lenguaje natural para apoyar a pacientes con DM1 en la autogestión de su condición.
Probá la aplicación directamente en: https://gluco-forecast-ai.vercel.app/
Podés explorar todas las funcionalidades sin necesidad de registrarte usando:
- Email:
demo@soysiglo.21.edu.ar - Contraseña:
SoySiglo21
Esta cuenta ya tiene datos de glucosa de muestra cargados y configuración completa para que puedas probar inmediatamente las funciones de análisis e IA haciendo preguntas.
- Monitoreo Continuo de Glucosa (CGM): Análisis completo de datos de glucosa con métricas de tiempo en rango (TIR)
- Inteligencia Artificial: Reconocimiento de patrones de glucosa y consejos personalizados con Google Gemini
- Integración LibreView: Importación automática de datos desde archivos CSV de LibreView
- Configuración de Parámetros: Gestión de factores de sensibilidad a la insulina (ISF), ratios de carbohidratos ( ICR) y rangos objetivo
- Visualizaciones Históricas: Gráficos y métricas de glucosa para diferentes períodos de tiempo
- Cálculo de Insulina: Asistencia inteligente para el cálculo de dosis de insulina
- Frontend: Next.js 15.3.3 con React 19 y TailwindCSS 4.1.7
- Base de Datos: PostgreSQL con Drizzle ORM
- Autenticación: NextAuth.js 5.0.0-beta.28
- Inteligencia Artificial: Google Gemini 2.0 Flash vía AI SDK
- Despliegue: Vercel con PostgreSQL
Antes de comenzar, asegurate de tener instalado:
-
Node.js 18.x o superior
- Descargar Node.js
- Verificar instalación:
node --version
-
pnpm 8.x o superior
- Guía de instalación de pnpm
- Instalación rápida:
npm install -g pnpm - Verificar instalación:
pnpm --version
-
Docker y Docker Compose
- Windows: Docker Desktop para Windows
- macOS: Docker Desktop para Mac
- Linux: Docker Desktop para Linux
- Verificar instalación:
docker --versionydocker-compose --version
-
Cuenta de Google AI Studio (para API de Gemini)
git clone https://github.com/matsebas/glucoforecast-ai.git
cd glucoforecast-aipnpm install# Copiar el archivo de ejemplo
cp .env.example .env.local- Ingresá a Google AI Studio
- Iniciá sesión con tu cuenta de Google
- Hacé clic en "Create API Key"
- Copiá la API key generada
- Editá el archivo
.env.localy reemplazáYOUR_GOOGLE_AI_API_KEY_HEREcon tu API key:
GOOGLE_GENERATIVE_AI_API_KEY="tu-api-key-real-aqui"# Iniciar PostgreSQL en Docker
docker-compose up -d postgres
# Verificar que la base de datos esté corriendo
docker-compose ps# Generar las migraciones de Drizzle
pnpm db:generate
# Aplicar las migraciones a la base de datos
pnpm db:migrate# Iniciar el servidor de desarrollo
pnpm devLa aplicación estará disponible en http://localhost:3000
# Detener la aplicación: Ctrl+C en la terminal donde corre pnpm dev
# Detener la base de datos
docker-compose down
# Para borrar todos los datos (cuidado, esto elimina la base de datos)
docker-compose down -v- LIBRE_LINK_EMAIL/PASSWORD: Para integración directa con LibreView API (opcional)
- BLOB_READ_WRITE_TOKEN: Para almacenamiento de archivos en Vercel (solo producción)
- VERBOSE: Para logs detallados durante desarrollo
- Error de conexión a la base de datos: Verificá que Docker esté ejecutándose y que el contenedor de PostgreSQL esté activo
- Error de API de Gemini: Verificá que tu API key sea válida y que tengas créditos disponibles
- Error de migraciones: Asegurate de que la base de datos esté corriendo antes de ejecutar las migraciones
- Conectando a Neon en lugar de local: Si tenés Vercel CLI instalado, podría estar inyectando variables de
entorno. Asegurate de que
USE_LOCAL_DB="true"esté en tu.env.local
El proyecto detecta automáticamente el entorno:
- Desarrollo local: Usa PostgreSQL local si
USE_LOCAL_DB="true"está configurado - Vercel: Usa automáticamente Neon Database en todos los entornos de Vercel
- Para trabajar con Vercel localmente: Comentá o eliminá
USE_LOCAL_DB="true"del.env.local
# Para desarrollo local
USE_LOCAL_DB="true"
# Para testing con datos de Vercel (comentar la línea anterior)
# USE_LOCAL_DB="true"En la carpeta demo_data/ encontrarás un archivo CSV con datos de muestra en formato LibreView que podés importar para
probar las funcionalidades:
demo_glucose_libreview_data.csv: Datos de glucosa de ejemplo compatibles con el formato de exportación de LibreView
- Iniciá sesión con la cuenta demo
- Navegá a la sección de importación de datos
- Subí el archivo
demo_glucose_libreview_data.csv - Esperá a que se procesen los datos
- Configurá tus parámetros de paciente (ISF, ICR, rangos objetivo)
- Explorá las métricas y consultá con la IA
# Desarrollo
pnpm dev # Iniciar servidor de desarrollo con Turbopack
pnpm build # Construir para producción
pnpm start # Iniciar servidor de producción
pnpm lint # Ejecutar ESLint
pnpm lint:fix # Corregir problemas de ESLint automáticamente
# Base de datos
pnpm db:generate # Generar migraciones de Drizzle
pnpm db:migrate # Aplicar migraciones a la base de datos
pnpm db:pull # Extraer esquema desde la base de datos
pnpm db:push # Empujar esquema a la base de datos (usar con precaución)├── app/ # Next.js App Router
│ ├── api/ # Rutas de API
│ ├── (home)/ # Rutas principales de la aplicación
│ ├── login/ # Página de inicio de sesión
│ └── register/ # Página de registro
├── components/ # Componentes React reutilizables
│ └── ui/ # Componentes de UI (shadcn/ui)
├── lib/ # Lógica de negocio y utilidades
│ ├── db/ # Configuración y esquema de base de datos
│ ├── services/ # Servicios organizados por dominio
│ ├── types/ # Definiciones de tipos TypeScript
│ └── validations/ # Esquemas de validación Zod
├── demo_data/ # Datos de prueba
└── drizzle/ # Migraciones de base de datos
- Todas las contraseñas se almacenan hasheadas usando bcrypt
- Los datos médicos están protegidos por autenticación obligatoria
- La aplicación cumple con prácticas de seguridad para datos sensibles de salud
- Las sesiones tienen un tiempo de expiración configurado de 30 minutos
IMPORTANTE: Esta aplicación es una herramienta de apoyo educativo y no reemplaza el consejo médico profesional. Siempre consultá con tu médico diabetólogo antes de hacer cambios en tu tratamiento de diabetes.
- Forkeá el proyecto
- Creá una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Realizá tus cambios y asegurate de que pasen los lints
- Commitea tus cambios (
git commit -m 'feat: agregar nueva funcionalidad') - Empujá a la rama (
git push origin feature/nueva-funcionalidad) - Abrí un Pull Request
- Idioma: Los comentarios del código están en español, siendo una aplicación médica en español
- Base de datos: Siempre ejecutá
pnpm db:generatedespués de cambios en el esquema, luegopnpm db:migrate - Testing: Actualmente no hay framework de testing configurado. Se realiza testing manual vía servidor de desarrollo
Este proyecto está bajo la Licencia MIT. Consultá el archivo LICENSE para más detalles.
Si tenés problemas o preguntas:
- Revisá la documentación en este README
- Buscá en los Issues existentes
- Creá un nuevo Issue si no encontrás solución
Desarrollado con ❤️ para la comunidad de diabetes tipo 1