尚未收集仓库信息。
尚未检测到更新。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 |