Software de gestión para clínicas dentales. Un solo espacio de trabajo para la agenda, la ficha clínica, el plan de tratamiento y el dinero.

La mayoría de las clínicas dentales trabajan con tres o cuatro herramientas desconectadas entre sí: un calendario para las citas, una carpeta de odontogramas en papel o PDF, una hoja de cálculo para los presupuestos de tratamiento, y un programa de facturación que no sabe nada de los otros dos. Cada traspaso entre ellas es manual, y en cada traspaso manual se pierden ingresos y detalle clínico.
Espejo Clinic reemplaza ese conjunto de herramientas con un solo sistema. La recepcionista agenda en el mismo calendario que usa el dentista. El dentista registra hallazgos diente por diente en un odontograma interactivo. Esos hallazgos se convierten en un plan de tratamiento, el plan se convierte en líneas de factura, y los pagos aparecen de vuelta en el panel que el dueño de la clínica abre cada mañana. Los pacientes reservan su propia cita en línea contra la disponibilidad real de la clínica, así que el teléfono deja de ser el cuello de botella.
| Rol | Qué le da el sistema |
|---|---|
| Dueño / gerente de la clínica | Un panel en vivo: las citas de hoy, los ingresos de hoy comparados con ayer, el saldo pendiente, los planes de tratamiento activos, la tendencia de ingresos de los últimos 7 días y los tratamientos más realizados. |
| Recepcionista / mostrador | Un calendario por día/semana/mes con estados codificados por color, asignación de sala y profesional, y reserva directa desde un espacio vacío — además de una página de reserva pública que llena la agenda sin necesidad de una llamada telefónica. |
| Dentista / especialista | Un odontograma interactivo con hallazgos por superficie, alertas médicas, alergias y condiciones en la ficha del paciente, y planes de tratamiento que pasan directo a la facturación. |
| Asistente | Líneas de detalle de la cita — qué servicios se realizaron realmente, en qué diente, a qué precio. |
| Grupos multi-sede | Sucursales, salas y horarios semanales por profesional y por sucursal, con disponibilidad calculada por sede. |
Once áreas funcionales, cada una una pantalla real del producto en funcionamiento.
Debajo de eso: la agenda completa del día, un gráfico de barras de ingresos de siete días, el total de pacientes con los nuevos de este mes, y un ranking de los tratamientos más realizados.

Vistas por día, semana y mes. Cada cita está codificada por color según su estado — Programada, Confirmada, En curso, Completada, Cancelada, No asistió — para que el estado de la agenda se lea de un vistazo.

Una página de reserva pública, sin autenticación — sin inicio de sesión del paciente, sin app que instalar — en tres pasos: elegir la cita, ingresar tus datos, confirmar.
Lo que la hace confiable es el motor de disponibilidad detrás de ella. Un horario solo se ofrece cuando sobrevive todas las restricciones a la vez:
El endpoint devuelve únicamente horarios libres — nunca el nombre, los datos de contacto o la cita de otro paciente.

Una dentición adulta completa dispuesta en arcadas superior e inferior, con cada diente clicable.

Los pacientes se construyen sobre un registro compartido de Persona — nombre, fecha de nacimiento, género, tipo y número de documento, teléfono, email, dirección y foto — la única fuente de verdad reutilizada tanto por usuarios como por profesionales y pacientes. La ficha del paciente agrega tipo de sangre, idioma preferido, contacto de emergencia, sucursal y notas clínicas.

Un plan agrupa el trabajo que el paciente ha aceptado: un título, una descripción, el profesional responsable, y un estado de borrador, activo, completado o cancelado.
Cada ítem del plan indica un servicio del catálogo, el diente al que aplica, la cantidad y el precio estimado, y sigue su propio avance — pendiente, en curso, completado u omitido.

Facturas por paciente y sucursal, cada una con número de factura, fecha de emisión, total, monto pagado y un estado que avanza de borrador → emitida → parcialmente pagada → pagada (o cancelada).
Los pagos se registran contra una factura con un monto, una fecha, una referencia y un método — efectivo, tarjeta, transferencia bancaria o seguro. Los pagos parciales están soportados de forma nativa, que es como realmente se paga un tratamiento dental.

Todo lo que la clínica ofrece — consulta, limpieza, obturación, endodoncia, extracción, corona, implante, blanqueamiento, ortodoncia, radiografía — cada uno con un código, una categoría, un precio base, una especialidad opcional y un indicador de activo.
Los nombres y descripciones de los servicios están traducidos por idioma, así que una clínica que atiende en dos idiomas le muestra a cada paciente el texto correcto sin duplicar el catálogo.


Configuración de toda la clínica en un solo lugar: nombre y logo de la clínica, y las reglas de reserva en línea — hora de apertura, hora de cierre, inicio y fin del descanso, qué días de la semana son laborales, duración del espacio en minutos, y la zona horaria IANA usada para convertir el horario local de la clínica a UTC.

Cada creación, actualización y eliminación en cada entidad se escribe automáticamente en un registro de auditoría, guardando la tabla, el registro, la acción y la marca de tiempo.
El registro es de solo lectura a través de la API — puede consultarse pero no editarse ni eliminarse desde la aplicación. Los registros que lo permiten se eliminan de forma suave (se desactivan en lugar de destruirse), así que el historial se conserva.

No es una tabla compartida con una columna tenant_id y un filtro que alguien podría
olvidar. Los datos de cada empresa clínica viven en su propia base de datos, resuelta en cada
solicitud a partir del subdominio o de una cabecera X-Tenant. Una solicitud sin un
tenant válido se rechaza antes de llegar a cualquier dato.
El motor de reserva cruza el horario de la clínica, los horarios de los profesionales por sucursal, los descansos, las citas existentes y la ocupación de salas. Nunca ofrece un horario que la clínica no pueda cumplir.
El español y el inglés son ambos de primera clase. Cada etiqueta, botón, aviso, diálogo, texto de ejemplo y mensaje de validación es una clave de traducción — incluidos valores como el estado de la cita y el estado del diente. El idioma preferido de cada usuario sigue a su cuenta.
Los hallazgos del odontograma alimentan los planes de tratamiento, los ítems del plan y los detalles de la cita hacen referencia al mismo catálogo de servicios con precio, y esas líneas se convierten en facturas y pagos. Nada se vuelve a digitar entre el trabajo clínico y la facturación.
La misma compilación corre sobre SQL Server para producción o sobre SQLite para un despliegue ligero y sin dependencias — elegido puramente por configuración, tanto para la base maestra como para cada base de datos de cliente.
La interfaz es una aplicación web progresiva responsiva: funciona en un teléfono junto al sillón y puede instalarse en la pantalla de inicio.
| Área | Detalle |
|---|---|
| Backend | .NET 10 · ASP.NET Core Web API · EF Core 10 · FluentValidation · Mapster |
| Frontend | React 19 · TypeScript · Vite · TanStack Query · PWA |
| Bases de datos | SQL Server (producción) o SQLite (despliegue ligero), elegido por configuración |
| Arquitectura | Limpia / por capas — Domain ← Application ← Infrastructure / API |
| Seguridad | Autenticación JWT bearer, autorización basada en roles, hash de contraseñas con BCrypt |
| Multi-tenencia | Base de datos por cliente; la base de datos maestra contiene los catálogos de clientes e idiomas |
| Auditoría | Un interceptor de EF Core escribe una fila de auditoría en cada cambio persistido |
| API | REST, documentada con un documento OpenAPI y una interfaz interactiva Scalar |
| Calidad | Suite de pruebas xUnit sobre los servicios de la aplicación; estándar de código forzado por analizadores |
Extraídas de lo que el producto realmente hace — nada aquí es una afirmación que el software no pueda respaldar.
Cada imagen es una captura real de la aplicación en funcionamiento. Haz clic en cualquier captura para ampliarla. Los archivos de origen están disponibles en PNG a 3200 × 2000 px (escritorio, retina 2×) y 1290 × 2796 px (móvil) — suficientemente grandes para impresión, redes sociales y anuncios web.
Las seis que sostienen una campaña por sí solas.

04-dashboard
08-odontogram
09-odontogram-tooth-selected
05-calendar-week
02b-public-booking-slots
01-landing-heroLo que ven los propios visitantes y pacientes de la clínica.

01-landing-full
02-public-booking
02-public-booking-full
03-loginLa agenda y la ficha del paciente.

04-dashboard-full
06-calendar-day
07-calendar-month
09-odontogram-full
10-patients
18-appointment-details
19-tooth-records
20-patient-allergies
21-medical-conditionsDesde la cotización hasta el pago.

11-treatment-plans
12-treatment-plan-items
13-invoices
14-payments
15-services-catalogEquipo, sedes y gobernanza.

16-professionals
17-professional-schedules
22-persons
23-users
24-branches
25-rooms
26-specialties
27-audit-logs
28-settings
29-patient-form-dialogEl mismo producto en un teléfono — para anuncios de pantalla dividida y formato historia.

30-mobile-dashboard
30b-mobile-menu
31-mobile-landing
32-mobile-bookingdemo, cuyos datos se generan con fines de demostración.
Los nombres, documentos y cifras de los pacientes son ficticios. El idioma de la interfaz que se ve
en las capturas está configurado en inglés.
Abre la demo en vivo, o conversa con Espejo Labs sobre adaptarlo a tu clínica.
Credenciales de la demo: admin@demo.local · Admin12345