Mirobody
인간 건강의 표준 레지스트리, 약 2천 개 임상·생활 지표를 하나의 언어로 정리
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
App de gestión de turnos para consultorio Kinesiológico
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Gestión kinesiológica moderna para consultorios
Sistema web para organizar turnos, pacientes y profesionales en consultorios de kinesiología. Producto KineTurnos v1.0, desplegado con PostgreSQL, autenticación y panel operativo completo.
| Aplicación | kineturnos.vercel.app |
| Repositorio | github.com/Matiglorioso/kineturnos |
| Versión | v1.0 · PostgreSQL + Auth · 2026 |
| Base de datos | PostgreSQL (Neon) + Prisma — setup local · deploy Vercel |
| Documentación | Fases · Arquitectura · Modelo de datos (DER) · Pruebas · Rendimiento · Disponibilidad · Respaldos · Notificaciones |
KineTurnos es una aplicación full-stack para la operación diaria de un consultorio kinesiológico: panel de control, agenda por día o semana, fichas de pacientes y gestión del equipo profesional.
La aplicación prioriza claridad de flujos, feedback inmediato (toasts, estados vacíos, confirmaciones) y una experiencia responsive (mobile, tablet y desktop), con persistencia en PostgreSQL (Neon) vía API REST y Prisma.
En muchos consultorios, la coordinación de pacientes, profesionales y horarios depende de planillas, WhatsApp o agendas genéricas que no contemplan:
Eso genera solapamientos, poca visibilidad del día y dificultad para seguir la carga de cada kinesiólogo.
KineTurnos centraliza esa operación en una sola interfaz pensada para administración y profesionales, reduciendo fricción en tareas repetitivas del día a día.
docs/NOTIFICACIONES.md)Datos de demostración, con nombres ficticios.
| Panel | Agenda del día |
|---|---|
| Agenda semanal | Agenda por profesional |
|---|---|
| Pacientes | Historia clínica |
|---|---|
| Autorizaciones | Planilla mensual por obra social |
|---|---|
| Profesionales | Usuarios |
|---|---|
| Panel | Agenda | Agenda por profesional | Historia clínica |
|---|---|---|---|
| Agenda semanal | Pacientes | Profesionales | Usuarios |
|---|---|---|---|
Se regeneran con npm run screenshots: crea una base descartable con datos de demostración, compila la app y captura con Playwright.
https://kineturnos.vercel.app/
La app requiere login. Los usuarios se crean con el seed mínimo o manualmente en la base.
Go-live (producción) — base vacía de pacientes/turnos:
npm run db:migrate:deploy
PowerShell (Windows):
$env:SEED_INITIAL_PASSWORD="tu-contraseña-segura"
npm run db:seed:minimal
Bash / macOS / Linux:
SEED_INITIAL_PASSWORD="tu-contraseña-segura" npm run db:seed:minimal
Crea los perfiles de la app para SANMAR SALUD: Superadmin (equipo de desarrollo), dos Administradores (dueño y recepción) y un Profesional (sin vincular). Cambiá emails y contraseña antes de entregar al cliente.
| Perfil | Quiénes | Puede |
|---|---|---|
| Superadmin | Equipo de desarrollo | Todo (y a futuro, tareas técnicas de mantenimiento) |
| Administrador | Dueños y recepción | Turnos, pacientes, profesionales, obras sociales, usuarios y dashboard |
| Profesional | Kinesiólogos | Su propia agenda y el registro de asistencia |
Si la base ya tiene datos, el seed aborta sin tocar nada. Para restablecer la contraseña de los usuarios iniciales sobre una base en uso:
npm run db:seed:minimal -- --force(nunca borra pacientes, profesionales ni turnos).
Desarrollo local — datos de ejemplo completos:
npm run db:seed
Sobre una base con datos aborta; para borrar todo y recargar los mocks: npx prisma db seed -- --force.
La sección Ayuda (/proyecto) está disponible una vez autenticado.
| Tecnología | Uso en el proyecto |
|---|---|
| Next.js 15 | App Router, layouts por módulo, metadata SEO |
| React 19 | Componentes client para interactividad |
| TypeScript | Tipos de dominio: Patient, Appointment, Professional |
| Tailwind CSS | Sistema visual, responsive, animaciones |
| shadcn/ui + Radix | Diálogos, selects, alertas accesibles |
| Lucide React | Iconografía consistente |
| date-fns | Fechas en español y lógica de calendario |
| Sonner | Notificaciones toast |
| Neon + Prisma 6 | PostgreSQL serverless + ORM |
| API Routes (Next.js) | CRUD REST: pacientes, profesionales, turnos |
# Clonar el repositorio
git clone https://github.com/Matiglorioso/kineturnos.git
cd kineturnos
# Instalar dependencias
npm install
# Modo desarrollo
npm run dev
Abrí http://localhost:3000 en el navegador.
| Comando | Descripción |
|---|---|
npm run dev | Servidor de desarrollo |
npm run dev:clean | Libera el puerto 3000, limpia caché y arranca dev |
npm run build | Build de producción |
npm run start | Servidor de producción (post-build) |
npm run lint | ESLint |
npm run clean | Elimina caché de .next |
npm run db:push | Sincroniza schema → DB (solo desarrollo puntual) |
npm run db:migrate:deploy | Aplica migraciones en producción / CI |
npm run db:seed | Datos de desarrollo (mocks + usuarios; sin turnos; bloqueado en producción; aborta si la base tiene datos, salvo --force) |
npm run db:seed:minimal | Solo usuarios iniciales (go-live; requiere SEED_INITIAL_PASSWORD; nunca borra datos; con datos existentes aborta, salvo --force) |
npm run db:purge-demo | Destructivo: borra pacientes/profesionales mock (no solo turnos) |
npm run db:restore-demo-people | Vuelve a cargar pacientes/profesionales mock; no crea turnos |
npm run db:clear-turnos | Borra todos los turnos y limpia ultimoTurno |
npm run db:studio | Prisma Studio (UI de la DB) |
npm run test:int | Prueba automática DB + API (requiere npm run dev y VERIFY_SECRET) |
npm run test:coverage | Cobertura de los unitarios (c8); reporte HTML en coverage/. Resultados: docs/TESTING.md |
npm run test:e2e | Tests E2E con Playwright (levanta npm run dev; base sembrada con db:seed, nunca producción) |
DATABASE_URL="postgresql://..." # Neon (requerido)
AUTH_SECRET="..." # Auth.js (requerido para login)
VERIFY_SECRET="..." # Bypass auth en test:int (local/CI)
CRON_SECRET="..." # Cron de recordatorios (Vercel + GitHub Actions)
BREVO_API_KEY="..." # Envío de correos (solo producción)
MAIL_FROM_EMAIL="..." # Remitente verificado en Brevo
NEXT_PUBLIC_SITE_URL=https://kineturnos.vercel.app
Copiá la plantilla desde env.example → .env.
Local: guía rápida en docs/TU-PARTE-NEON.md
Producción (Vercel): docs/TU-PARTE-VERCEL.md
CI / verify: docs/CI.md
Referencia completa: docs/GUIA-NEON-PRISMA.md
npm run db:push # Crear tablas en Neon
npm run db:seed # Datos completos de desarrollo
npm run db:seed:minimal # Go-live: solo usuarios (requiere SEED_INITIAL_PASSWORD)
npm run db:studio # Ver la DB en el navegador
npm run test:int # Verificar migración (con dev server activo)
DATABASE_URL (connection string Pooled de Neon) en Environment VariablesAUTH_SECRET y NEXT_PUBLIC_SITE_URL = https://kineturnos.vercel.apphttps://kineturnos.vercel.app/login y /api/health/dbDetalle paso a paso: docs/TU-PARTE-VERCEL.md
kineturnos/
├── public/ # Favicon e íconos estáticos
├── scripts/ # Utilidades CLI (limpieza de caché, puerto)
└── src/
├── app/ # Rutas App Router
│ ├── page.tsx # Dashboard (/)
│ ├── agenda/ # Agenda lista y semanal
│ ├── pacientes/ # Gestión de pacientes
│ ├── profesionales/ # Gestión de kinesiólogos
│ ├── proyecto/ # Ayuda (requiere login)
│ └── api/ # REST: patients, professionals, appointments, health/db
├── components/
│ ├── agenda/ # Vistas de calendario
│ ├── appointments/ # Turnos, badges, acciones
│ ├── brand/ # Logo e identidad
│ ├── dashboard/ # Widgets del panel
│ ├── layout/ # Shell, sidebar, header
│ ├── patients/ # Cards, tablas, diálogos
│ ├── professionals/ # Cards y formularios
│ ├── shared/ # Componentes reutilizables
│ └── ui/ # Primitivos (shadcn-style)
├── data/ # Mocks para seed
├── hooks/ # usePatients, useProfessionals, useAppointments
├── lib/ # Validación, fechas, toasts, capa DB
└── types/ # Tipos TypeScript del dominio
usePatients, useProfessionals, useAppointments) consumen la API REST y mantienen estado en cliente con toasts de errordd-MM-yyyy explícito en toda la app para evitar ambigüedadlib/appointment-validation.ts) reutilizada en formularios y APIcloseDetailBeforeAction para evitar overlays congelados entre Dialog y AlertDialog| Área | Estado |
|---|---|
| UI / UX responsive | ✅ Completo |
| CRUD pacientes, profesionales y turnos | ✅ Completo |
| Agenda por día, semana y profesional (RF03) | ✅ Completo |
| Validación de horarios y solapamientos | ✅ Completo (cliente + servidor) |
| PostgreSQL (Neon) + Prisma | ✅ Completo |
| API REST + hooks conectados a DB | ✅ Completo |
| Validación DNI / matrícula únicos | ✅ Completo |
| Autenticación (login + middleware) | ✅ Completo |
Sync ultimo_turno y nombres en turnos | ✅ Completo |
| CI GitHub Actions (lint, build, verify) | ✅ Completo |
| Migraciones Prisma formales | ✅ Completo |
Deploy Vercel con DATABASE_URL + AUTH_SECRET | 📋 Guía |
| Branding, metadata y favicon | ✅ Completo |
| Historia clínica digital (RF11-RF13, RNF06-RNF07) | ✅ Completo |
| Obras sociales y autorizaciones (RF07, RF14, RF15) | ✅ Completo |
| Indicadores de gestión del panel (RF16) | ✅ Completo |
| Notificaciones por email (RF05) | ✅ Completo (config) |
| Gestión de usuarios y contraseñas | ✅ Completo |
| Búsqueda de pacientes por nombre, DNI o CUIL (RF08) | ✅ Completo |
| Monitoreo de disponibilidad 24 h (RNF08) | ✅ Completo (detalle) |
| Respaldo diario cifrado de la base (RNF09) | ✅ Completo (detalle) |
Matías Aliaga
| GitHub | github.com/Matiglorioso/kineturnos |
| App | kineturnos.vercel.app |
Proyecto privado / uso comercial. [Definir licencia si se publica en GitHub — ej. MIT]
npm run verify:production |
| Smoke test de kineturnos.vercel.app + usuarios en Neon |
npm run perf | Prueba de rendimiento con volumen real en una base descartable (docs/RENDIMIENTO.md) |
npm run screenshots | Regenera las capturas de docs/screenshots con datos de demostración |
npm run diagramas | Genera los diagramas de la tesis en draw.io (docs/diagramas/*.drawio); se exportan a PNG con draw.io (detalle) |
npm run disponibilidad | Porcentaje de disponibilidad según el monitoreo (docs/DISPONIBILIDAD.md) |
| Rendimiento medido con 6.640 turnos (RNF03, RNF04) |
| ✅ Completo (informe) |
| Notificaciones por WhatsApp | ❌ No incluido |