Jamorham
Nightscout용 xDrip+ 버전
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
UNIVERZOO · Sistema de Recordatorios de Vacunación Sistema web para la clínica veterinaria UNIVERZOO: registra propietarios, mascotas y vacunaciones, y envía recordatorios automáticos por WhatsApp usando una fecha de próxima vacunación ingresada manualmente (nunca calculada por el sistema).README 전문 보기 ↗
Sistema web para la clínica veterinaria UNIVERZOO: registra propietarios, mascotas y vacunaciones, y envía recordatorios automáticos por WhatsApp usando una fecha de próxima vacunación ingresada manualmente (nunca calculada por el sistema).
Decisiones tomadas y por qué:
@prisma/adapter-neon + ws, configurado en src/lib/db.ts) para poder
usar transacciones — la variante HTTP del driver de Neon no las soporta y
algunas operaciones de Prisma (como upsert) las requieren internamente.
El CLI de Prisma (migraciones) usa la conexión directa
(DATABASE_URL_UNPOOLED) en vez de la pooled, porque las operaciones de
esquema no son compatibles con el pooler (pgbouncer).next-auth
(todavía en beta) para no depender de una librería que podría no estar
alineada con la versión de Next. La sesión es un JWT firmado (jose) en una
cookie httpOnly + secure en producción, verificado en src/proxy.ts
(el archivo que reemplazó a middleware.ts desde Next.js 16).proxy.ts) como dentro de cada Server Action
(defensa en profundidad).scripts/run-reminders.ts),
pensado para ejecutarse vía cron / Programador de tareas de Windows, no
depende de que alguien tenga el navegador abierto. También existe un Route
Handler (/api/cron/reminders, protegido con CRON_SECRET) para
integrarlo con schedulers HTTP externos si se despliega en un host serverless.fetch, sin
automatización no oficial ni WhatsApp Web. Las credenciales viven únicamente
en variables de entorno del servidor (src/lib/whatsapp.ts), nunca en el
frontend.#F78620 / marrón
#4D403A, extraída del logo) definida como tokens en src/app/globals.css.npm install
npm run db:migrate # aplica prisma/migrations contra DATABASE_URL_UNPOOLED
npm run db:seed # usuario admin + catálogo de vacunas + plantillas
npm run dev
Por defecto el seed crea el usuario [email protected] / Univerzoo2026!
(cambiala apenas entres). Podés fijar tus propias credenciales iniciales con
SEED_ADMIN_EMAIL y SEED_ADMIN_PASSWORD. Para incluir además datos de
ejemplo (propietario/mascota ficticios, solo útil en desarrollo local), corré
el seed con SEED_DEMO_DATA=true.
El proyecto está desplegado en Vercel, con Postgres provisto por la
integración Neon del propio dashboard de Vercel (Storage → Create Database).
Pasos completos en DEPLOY.md.
Cambiar esta contraseña / crear usuarios reales antes de usar en producción
desde Usuarios (solo Administrador).
.env)Ver .env.example. Las más importantes:
DATABASE_URL: cadena de conexión (file:./dev.db en desarrollo).AUTH_SECRET: secreto para firmar las sesiones. Cambiar en producción.CRON_SECRET: secreto para invocar /api/cron/reminders por HTTP.WHATSAPP_ACCESS_TOKEN, WHATSAPP_PHONE_NUMBER_ID,
WHATSAPP_BUSINESS_ACCOUNT_ID, WHATSAPP_VERIFY_TOKEN: credenciales de
WhatsApp Business Platform (Meta). Sin estas variables, el sistema sigue
funcionando: genera y registra los recordatorios pendientes, pero cada envío
queda marcado como Error: Integración de WhatsApp no configurada, visible
en Mensajes.npm run reminders:run
Programarlo en el sistema operativo:
npm.cmd con argumentos run reminders:run, directorio de inicio la carpeta
del proyecto, frecuencia diaria.0 8 * * * cd /ruta/al/proyecto && npm run reminders:run.POST /api/cron/reminders con header Authorization: Bearer <CRON_SECRET>.Las plantillas (Configuración → Plantillas de WhatsApp) definen el texto
interno (para el registro/auditoría) y el nombre exacto de la plantilla
aprobada en WhatsApp Business Manager — WhatsApp exige plantillas
pre-aprobadas para mensajes iniciados por el negocio, así que ese nombre debe
coincidir con lo dado de alta en Meta.
Funciones explícitamente fuera del MVP (dejadas preparadas en la arquitectura para el futuro, sin construir): agenda de turnos, historia clínica, facturación, farmacia, portal del propietario, chat automatizado, múltiples sucursales.
prisma/schema.prisma Modelo de datos completo (11 tablas)
prisma/seed.ts Datos iniciales (admin, catálogo, ejemplo)
scripts/run-reminders.ts Motor de recordatorios como proceso standalone
src/lib/ Lógica de negocio (auth, whatsapp, reminders, status...)
src/app/(app)/ Páginas protegidas (dashboard, propietarios, mascotas...)
src/app/login/ Login (público)
src/app/api/ Webhook de WhatsApp, cron HTTP, exportación CSV
src/proxy.ts Protección de rutas (reemplaza a middleware.ts en Next 16)