Crear una app web para salón de uñas: citas, pagos e historial
Planifica y crea una app web para un salón de uñas local: reservas y calendario, pagos y recibos, e historial de clientes—diseñada para personal ocupado y clientes recurrentes.

Definir objetivos, usuarios y alcance
Antes de elegir herramientas o diseñar pantallas, aclara qué intenta resolver el salón. La mayoría de los salones de uñas no necesitan “todo” desde el primer día: necesitan un sistema que elimine fricciones diarias.
Empieza por los problemas a resolver
Escribe los problemas recurrentes de tu equipo y conviértelos en objetivos. Los más comunes incluyen:
- Doble-reservas por gestionar notas en papel, mensajes y llamadas
- Pagos perdidos o mal registrados (efectivo vs. tarjeta, propinas sin registrar, depósitos olvidados)
- Notas de clientes perdidas (alergias, formas preferidas, “nunca reservar conmigo X”, etc.)
Sé específico: “Evitar doble-reservas” es mejor que “Mejorar la programación”.
Identifica los usuarios (y qué necesita cada uno)
Una app web para salón de uñas normalmente atiende a cuatro grupos:
- Propietario/gerente: quiere visibilidad (ventas, no-shows, rendimiento del personal) y control (precios, políticas)
- Recepción: necesita reservas rápidas, reprogramaciones sencillas y un calendario diario claro
- Técnicos de uñas: necesitan su propio horario y notas de clientes—sin acceso a ajustes administrativos sensibles
- Clientes: quieren reservar por sí mismos, recibir confirmaciones y una forma simple de volver a reservar
Diseña pensando en el momento más ocupado: una visita en persona más dos llamadas y el cobro al mismo tiempo.
Define el alcance: imprescindible vs. deseable
Para la primera versión, prioriza:
- Menú de servicios + duraciones + precios
- Reserva/reprogramación + configuración de políticas de no-show
- Conceptos básicos de pagos (depósito opcional) + recibos
- Perfiles de clientes + notas de historial CRM
Deseable más adelante: membresías, inventario, multi-sede, automatizaciones avanzadas de marketing.
Elige métricas de éxito que vas a rastrear
Selecciona resultados medibles, por ejemplo:
- Menos no-shows (p. ej., reducir 20% tras añadir depósitos/recordatorios)
- Cobro más rápido (p. ej., promedio por debajo de 60 segundos)
- Más re-reservas (p. ej., aumentar la tasa de “volver a reservar” en 30 días)
Estas métricas mantienen el desarrollo enfocado y te ayudan a decidir qué mejorar después.
Mapea las funciones principales para un salón de uñas
Antes de escribir una sola línea de código, mapea las funciones que tu app debe soportar en el día uno—y qué puede esperar. Esto mantiene simple el sistema de programación, reduce el tiempo de formación y evita que la acumulación de funciones retrase el lanzamiento.
1) Citas (el corazón de la reserva online para salones)
Empieza con un flujo que funcione tanto para clientes como para la recepción:
- Reserva online: elegir servicio → elegir personal (opcional) → seleccionar hora → confirmar
- Visitas en persona: añadir rápido con campos mínimos (nombre + servicio + técnico + hora de inicio)
- Reprogramaciones y cancelaciones: cambios con un clic, actualizaciones automáticas de estado y un registro claro de quién cambió qué
- Configuración de política de no-show: depósitos obligatorios, ventana de cancelación y si las no-presentaciones repetidas requieren aprobación manual
Asegúrate de que las reservas eviten doble-reservas y tengan en cuenta la duración del servicio y el tiempo de buffer (p. ej., limpieza entre clientes).
2) Pagos (seguimiento de pagos sin complicaciones)
Los pagos no tienen que ser complicados, pero sí deben ser consistentes:
- Rastrear pagos con tarjeta y en efectivo por cita
- Soportar depósitos (especialmente para servicios largos) y aplicarlos al cobrar
- Capturar propinas separadas de los ingresos por servicio para informes limpios
- Generar recibos y facturas (email e imprimible)
- Opcional: tarjetas regalo (emitir, canjear, saldo)
Aunque integres un proveedor de pagos después, diseña el flujo para que cada cita pueda marcarse como “paid”, “partially paid” o “unpaid”.
3) Historial de clientes CRM (el motor de retención)
Un CRM ligero debería mostrar, de un vistazo:
- Línea temporal de visitas (fechas, servicios, técnico)
- Preferencias (forma, notas de color, alergias/sensibilidades)
- Complementos comunes y compras repetidas
- Opcional: adjuntar fotos para referencia (antes/después o inspiración)
4) Operaciones (lo que los propietarios usan a diario)
Completa lo básico con un editor de menú de servicios y precios, programación básica de personal y notas internas. Las notas de inventario son útiles, pero mantenlas ligeras a menos que construyas una gestión completa de stock.
Diseña un modelo de datos simple (qué necesitas almacenar)
Una app de salón de uñas vive o muere por lo limpia que sea su estructura de datos. Si mantienes el modelo simple y consistente, reservar, cobrar e histórico de clientes será más fácil de construir y de confiar.
Entidades principales (tablas) que realmente necesitas
Empieza con lo esencial y añade más solo cuando tengas un dolor real:
- Customers: las personas que reservan servicios
- Staff: técnicos y usuarios de recepción/admin
- Services: tu menú (manicura gel, relleno acrílico, add-on de nail art, etc.)
- Appointments: el trabajo programado
- Payments: depósitos, pagos finales, propinas y reembolsos
- Locations (opcional): útil si tienes varias sucursales o salas
Campos clave que previenen el caos diario
Unos pocos campos llevan la mayor parte del valor operativo:
- Service:
name,price,duration_minutesy buffer time (p. ej., 10 minutos para limpieza). El buffer mantiene tu calendario realista. - Appointment:
start_time,end_time(o calculado desde duración + buffer),status(booked/checked-in/completed/no-show/canceled),customer_id,staff_id, ylocation_id. - Payment:
amount,type(deposit/final/tip/refund),method(card/cash), además de impuestos, descuentos y un enlace a la cita.
Vincular registros: modela el comportamiento real
Haz que sea normal que una cita tenga múltiples pagos. Ejemplo: un depósito de $20 online, luego $45 en tienda, luego $10 de propina—más un reembolso si cambia algo.
Eso significa que tu tabla Payments debe permitir muchas filas por appointment_id, no un único campo “estado de pago” en la cita.
Trazabilidad básica (para rendición de cuentas)
Incluso en un salón pequeño, querrás saber qué cambió.
Almacena updated_at y updated_by en Appointments como mínimo. Si quieres una traza más fuerte, añade un registro AppointmentChanges con: appointment_id, changed_by, changed_at y un breve change_summary (p. ej., “Hora movida 14:00 → 14:30”). Esto ayuda a resolver disputas sobre no-shows, depósitos y ediciones de última hora.
Construye el flujo de reserva y calendario
Tu flujo de reservas convierte “quiero uñas” en un hueco confirmado en el calendario sin idas y vueltas.
Comienza con reglas claras de reserva
Antes de diseñar pantallas, define las reglas que el calendario debe aplicar:
- Duración del servicio: cada servicio necesita un tiempo por defecto, con add-ons que lo extienden opcionalmente.
- Coincidencia de habilidades del personal: solo muestra técnicos que pueden realizar el servicio seleccionado.
- Horario de apertura y pausas: bloquea comida, limpieza y días no laborables para que los clientes no vean huecos imposibles.
- Tiempo de buffer: añade un buffer configurable (p. ej., 10 minutos) entre citas para limpieza y preparación.
Evitar conflictos (incluso con clics simultáneos)
La prevención de conflictos debe ocurrir en dos sitios:
- Mientras se eligen horarios: muestra solo horas de inicio que no se solapen con citas existentes y respeten buffers.
- Al confirmar: vuelve a comprobar disponibilidad justo antes de guardar. Dos personas pueden seleccionar el mismo hueco: tu servidor debe rechazar la segunda reserva limpiamente y pedir al cliente que elija otra hora.
Flujo de reserva para el cliente
Mantenlo simple y predecible:
Elegir servicio → elegir hora → elegir técnico (opcional) → confirmar.
Si al cliente no le importa quién lo atiende, por defecto muestra “Cualquier técnico disponible” para ofrecer más opciones.
Flujo de calendario para el personal
El personal necesita rapidez. Proporciona un calendario día/semana donde puedan:
- crear una cita en un par de clics (servicio + cliente + hora)
- arrastrar para reprogramar (con las mismas reglas de conflicto)
- editar rápido (notas, add-ons, estado del depósito)
Un buen siguiente paso es conectar integraciones más adelante (ver /blog/integrations-calendar-messaging-payments), pero afianza primero el flujo central.
Implementa pagos, depósitos, propinas y recibos
Los pagos hacen que la app deje de ser un calendario y pase a ser una herramienta de negocio. El objetivo: reducir no-shows, agilizar el cobro y mantener registros limpios.
Depósitos (protección contra no-shows)
Decide cuándo exigir depósito y hazlo predecible para los clientes:
- Cuándo: desencadenantes comunes: “cliente nuevo”, “horas punta”, “citas > 60–90 minutos” o “servicios caros”.
- Cuánto: importe fijo (p. ej., $15–$30) o porcentaje (p. ej., 20–50%). Manténlo consistente por categoría de servicio.
- Cómo se aplica: guarda el depósito como un pago en la cita y réstalo automáticamente de la factura final en el cobro.
Añade una configuración para la ventana de cancelación (p. ej., 24 horas). Si el depósito se pierde, registra ese resultado explícitamente (no como un “reembolso”).
Flujo de cobro (servicios → add-ons → propina → descuentos)
En el cobro, rellena lo reservado, pero permite ediciones rápidas:
- Servicios realizados (desde el menú de servicios)
- Add-ons (nail art, chrome, reparación, longitud extra)
- Descuentos (código promo, fidelidad, descuento del gerente) con nota obligatoria de motivo
- Propina (botones sugeridos: 15/20/25% + personalizado)
- Pagos divididos (efectivo + tarjeta) si el salón lo necesita
Recibos (digital + imprimible)
Ofrece recibo por email/SMS y una vista imprimible para la recepción. Incluye: fecha/hora de la cita, servicios desglosados, propina, descuento, impuesto, depósito aplicado y saldo pendiente.
Reembolsos y ajustes (amigables con auditoría)
Nunca sobrescribas pagos. Crea un registro de ajuste vinculado al pago original (reembolso, reembolso parcial, void, corrección) con marca de tiempo, miembro del personal y motivo. Esto mantiene los totales precisos y facilita resolver disputas.
Crea perfiles de clientes e historial de servicios
Los perfiles hacen que la app se sienta personal. Un buen perfil ayuda al equipo a ofrecer resultados consistentes, detectar patrones (p. ej., no-shows frecuentes) y hacer que los clientes se sientan recordados—sin depender de notas adhesivas o la memoria de una persona.
Qué almacenar en un perfil de cliente
Mantén lo básico ligero, pero útil:
- Info de contacto: nombre, teléfono, email (para confirmar citas y enviar recibos)
- Cumpleaños (opcional): sólo si tienes un uso claro (ofertas de cumpleaños)
- Alergias y sensibilidades: productos a evitar, reacciones en la piel, problemas con fragancias
- Preferencias: técnico favorito, duración preferida, “sin gel”, “cuadrado corto”, etc.
Haz los campos opcionales realmente opcionales. El perfil más rápido se crea automáticamente tras la primera reserva.
Construye un historial fácil de escanear
La vista de historial debe responder: “¿Qué hicimos la última vez?” y “¿Cuánto suele gastar este cliente?”. Incluye:
- Citas pasadas: fecha/hora, técnico, estado (completada/cancelada/no-show)
- Servicios realizados: nombre del servicio, add-ons, duración
- Resumen de pagos: total pagado, depósito usado, propinas, reembolsos
- Señales de comportamiento: contador de no-shows y fecha del último no-show
Un pequeño encabezado “de un vistazo” (total gastado, visitas, última visita) ahorra tiempo al personal.
Plantillas de notas (para consistencia)
Las notas libres pueden volverse caóticas. Ofrece plantillas rápidas como:
- “Color de esmalte:”
- “Forma:”
- “Longitud:”
- “Áreas sensibles:”
- “Productos usados:”
Las plantillas aceleran la entrada y mantienen las notas legibles para todo el equipo.
Controles de privacidad para notas y fotos
No todo el personal necesita ver todo. Añade controles por roles como:
- Recepción: info de contacto + historial de citas
- Técnicos: preferencias, alergias, notas de servicio
- Gerentes/admin: acceso completo, incluidas banderas de no-show y totales de gasto
Si guardas fotos, etiqueta claramente quién puede verlas y ofrece una opción simple para borrarlas cuando se solicite.
Configura roles y permisos del personal
Una app necesita niveles de acceso distintos para que la gente correcta haga su trabajo—sin que todos vean ingresos, herramientas de reembolso o notas privadas. Los roles claros también facilitan la formación porque la app se comporta de forma consistente para cada persona.
Define los roles principales
Un conjunto práctico inicial es:
- Propietario/Admin: acceso total, incluidos ajustes, pagos, reembolsos y exportaciones
- Gerente: dirige operaciones diarias sin tocar controles financieros de alto riesgo
- Recepcionista: gestiona reservas, reprogramaciones, confirmaciones y walk-ins
- Técnico de uñas: se centra en su horario y en los datos del cliente necesarios para el servicio
Qué puede hacer cada rol (y qué no)
Mantén los permisos ligados a tareas reales:
- Editar horario: propietario/admin, gerente, recepcionista. Los técnicos pueden solicitar cambios o mover solo sus propias citas (opcional).
- Ver ingresos e informes: propietario/admin; el gerente puede ver totales resumidos; recepcionistas y técnicos normalmente no.
- Acceder a notas de clientes: recepción y técnicos pueden ver notas relacionadas con el servicio (alergias, preferencias). Limita la edición de notas sensibles a gerente/admin.
- Procesar reembolsos / borrar registros: restringe a propietario/admin (o gerente con aprobación extra).
Inicio de sesión rápido y seguro para el personal en el salón
Si la recepción usa una tablet compartida, añade un PIN o cambio de usuario por toque. Cada persona sigue teniendo cuenta única; el PIN simplemente acelera el acceso. El bloqueo automático tras inactividad evita accesos accidentales.
Registro de actividad para responsabilidad
Registra acciones sensibles con quién, qué, cuándo y desde qué dispositivo—especialmente reembolsos, anulaciones, sobreescrituras de precio, borrado de citas y edición de tickets completados. Haz el registro legible y buscable por cliente, fecha y personal.
Añade un panel de administración e informes
Un dashboard admin es la pantalla principal para propietarios y gerentes: un lugar para ver qué ocurre hoy, qué requiere atención y si el negocio va por buen camino. Mantenlo simple—rápido de cargar, legible en tablet y enfocado en acciones.
Vista diaria (operaciones)
Empieza con una vista diaria que responda: “¿Qué tenemos que hacer ahora?” Incluye:
- Horario de hoy por franja horaria y técnico, con filtros rápidos (personal, servicio, estado)
- Walk-ins: botón ligero para añadir walk-in que lo coloque en el siguiente hueco disponible
- Saldos impagos: resaltar citas completadas pero no totalmente pagadas
- Llegadas tarde: bandera visible (p. ej., 5–10 minutos tarde) y recordatorio de nota para la recepción
Esta pantalla debería permitir acciones con un clic: marcar como llegado, reprogramar, reembolsar/void o enviar recordatorio.
Informes que los propietarios realmente usan
Evita gráficos abrumadores. Ofrece un conjunto pequeño de informes fiables y haz que el selector de rango de fechas sea consistente en todas partes.
Informes imprescindibles:
- Ingresos por día (con desglose opcional: servicios, propinas, impuestos)
- Servicios top (qué se vende, qué está en tendencia)
- Utilización del personal (horas reservadas vs. horas disponibles)
Insights de clientes (para reducir brechas y no-shows)
Añade un panel de insights simple de entender:
- Tasa de repetición (nuevos vs. recurrentes)
- Tasa de re-reserva (cuántos vuelven a reservar en X días)
- Tasa de no-shows (y cómo cambia tras recordatorios/depositos)
Exportes y resúmenes imprimibles
Las rutinas contables y de fin de día aún necesitan archivos y papel. Ofrece:
- Export CSV para contabilidad (ventas diarias, pagos, impuestos)
- Resúmenes imprimibles simples (horario diario, totales de fin de día)
Si necesitas inspiración para un diseño limpio, mantén la navegación del dashboard consistente con el resto de la app (p. ej., /admin/reports, /admin/schedule).
Elige una pila tecnológica que encaje con un pequeño negocio
La mejor pila es la que el salón pueda permitirse mantener y que el equipo pueda gestionar. Prioriza fiabilidad, actualizaciones sencillas y costos mensuales bajos sobre arquitectura compleja.
App web mobile-first vs. app para tablet enfocada en recepción
Si la mayoría de reservas vienen desde Instagram/Google, ve mobile-first: páginas rápidas, botones grandes y flujo de reserva que funcione en pantallas pequeñas.
Si el salón reserva principalmente en mostrador, considera tablet-first para el personal: vistas de calendario más grandes, búsqueda rápida de clientes y menos toques.
Muchos salones hacen ambas cosas: sitio de reservas mobile-friendly y pantallas de administración optimizadas para personal.
Opciones de backend: monolito simple vs. API + frontend
Para un pequeño negocio, un monolito simple (una base de código que sirve páginas y maneja la BD) suele ser más fácil y barato. Se construye antes, despliega y depura más sencillamente.
Una API + frontend separado puede ser útil si ya sabes que necesitarás app móvil, múltiples ubicaciones o socios externos. Si no, suele añadir complejidad temprana.
Elección de base de datos: relacional para reservas y pagos
Usa una base de datos relacional (PostgreSQL o MySQL). Citas, horarios, depósitos, propinas, reembolsos y recibos son datos conectados. Una BD relacional facilita aplicar reglas (evitar doble-reserva) y generar informes exactos.
Hosting básico: staging vs. producción, backups, monitoreo de errores
Configura dos entornos: staging (probar cambios) y producción (en vivo). Automatiza copias de seguridad diarias y practica restaurarlas.
Añade monitoreo de errores para saber de fallos antes que los clientes (p. ej., errores en checkout o sincronización de calendario). Incluso una configuración simple debe incluir chequeos de uptime, logs y una forma de revertir.
Si quieres una lista práctica, mantén una página interna como /blog/launch-checklist para “qué verificar antes de actualizaciones”.
Un camino más rápido si quieres lanzar sin pipeline completo
Si tu objetivo es validar el flujo (reglas de reserva, depósitos, recibos, roles) antes de invertir meses en ingeniería a medida, una plataforma de vibe-coding como Koder.ai puede ayudarte a obtener una versión funcional más rápido.
Koder.ai permite construir apps web mediante una interfaz conversacional, con React en el frontend y Go + PostgreSQL en el backend. También soporta exportar código fuente, hosting y despliegue, dominios personalizados y snapshots con rollback—útil cuando iteras sobre flujos de reservas y pagos en vivo. Si después te quedas corto con la primera versión, puedes conservar el código y continuar el desarrollo por tu cuenta.
Preguntas frecuentes
¿Qué debe incluir una app web para salón de uñas en la primera versión?
Empieza por listar los problemas diarios recurrentes (p. ej., doble-reservas, depósitos no registrados, notas de clientes perdidas) y conviértelos en objetivos medibles.
Un alcance práctico para “v1” suele incluir:
- Menú de servicios con duraciones/precios (más tiempo de buffer)
- Reserva/reprogramación/cancelación con reglas de no-presentación
- Registro de pagos (depósito opcional) + recibos
- Perfiles de clientes + notas de historial de servicios
¿Quiénes son los usuarios principales de una app para salón de uñas y qué necesita cada uno?
Diseña pensando en los usuarios reales y sus momentos más ocupados:
- Propietario/gerente: informes, ajustes, políticas, visibilidad
- Recepción: reserva/reprogramación rápida y un calendario diario claro
- Técnicos de uñas: su propio horario + notas del cliente (sin acceso administrativo)
- Clientes: reserva autoservicio, confirmaciones y re-reserva fácil
La claridad de roles reduce el tiempo de formación y evita accesos accidentales a herramientas sensibles (como reembolsos).
¿Cómo se previenen de forma fiable las doble-reservas en el calendario?
Prevenir conflictos en dos capas:
- Mientras navega: sólo muestra horarios que encajan en la duración del servicio + buffer y no se solapan con citas existentes.
- Al confirmar: vuelve a comprobar la disponibilidad en el servidor justo antes de guardar.
Aunque dos personas hagan clic en el mismo hueco, el servidor debe rechazar la segunda reserva y devolver un mensaje claro: “ese horario ya se ocupó—elige otro”.
¿Por qué es importante el tiempo de buffer y cómo implementarlo?
El buffer hace que el calendario sea realista (limpieza, preparación, llegadas tarde). Guárdalo como parte de las reglas de programación, no como una costumbre manual.
Enfoques comunes:
- Añadir
buffer_minutespor servicio (o por localización) - Calcular
end_time = start_time + duration + buffer - Aplicar las mismas reglas para reservas online y para arrastrar/reprogramar
¿Cuál es un modelo de datos simple y escalable para citas y pagos?
Mantén el modelo de datos pequeño y consistente. Un conjunto típico es:
- Customers
- Staff
- Services
- Appointments
- Payments
Regla clave de modelado: permitir múltiples pagos por cita (depósito, pago final, propina, reembolso). No confíes en un único campo “pagado/no pagado” cuando el comportamiento real incluye parciales y ajustes.
¿Cómo deben funcionar los depósitos y las políticas de no-presentación en la app?
Haz las reglas de depósito previsibles y configurables:
- Cuándo: clientes nuevos, horas punta, servicios largos/de alto coste
- Cuánto: importe fijo o porcentaje por categoría de servicio
- Cómo se aplica: guarda como un registro de pago y réstalo automáticamente en la cuenta final
Además, rastrea una ventana de cancelación (p. ej., 24 horas) y registra los depósitos perdidos explícitamente para mantener los informes precisos.
¿Cuál es la mejor forma de manejar propinas, pagos divididos y recibos?
Usa un flujo de cobro consistente y mantén las ediciones rápidas:
- Servicios realizados (prefill desde la reserva)
- Add-ons
- Descuentos (requiere nota de motivo)
- Propina (separada de los ingresos por servicio)
- Pago dividido opcional (efectivo + tarjeta)
Los recibos deben enviarse por email/SMS y ofrecer una vista imprimible, detallando servicios, impuestos, descuento, propina, depósito aplicado y saldo restante.
¿Cómo funcionan típicamente los roles y permisos en una app de salón?
Empieza con roles claros y restringe acciones de alto riesgo:
- Reembolsos/voids/borrados: propietario/admin (o gerente con aprobación)
- Informes/exportaciones de ingresos: propietario/admin (el gerente puede ver resúmenes)
- Edición de citas: recepción/gerente; técnicos limitados a sus propias citas (opcional)
Añade un registro de actividad para acciones sensibles (quién/qué/cuándo/desde dónde). Esto ayuda a resolver disputas sobre depósitos, no-presentaciones y ediciones.
¿Qué integraciones importan más (SMS, calendarios, pagos) y cuándo añadirlas?
Añade integraciones sólo cuando los flujos básicos de reserva + pago estén estables.
Integraciones comunes iniciales:
- SMS/email: confirmaciones, recordatorios, avisos de política (con opción de baja para SMS)
- Calendario: exportación unidireccional primero; sincronización bidireccional solo con reglas claras de conflicto
- Pagos: elegir según comisiones, tiempos de pago y soporte para depósitos/propinas/reembolsos
Decide si los recibos salen desde tu app, desde el proveedor o desde una sola fuente para evitar recibos duplicados.
¿Cuál es una forma segura de lanzar la app y migrar datos existentes?
Mantén bajo el riesgo de lanzamiento con un piloto y un plan de migración limpio:
- Piloto con un turno/equipo y mide errores de reserva + problemas de cobro
- Importa solo clientes y citas futuras; valida un lote pequeño primero
- Mantén el sistema antiguo en modo solo lectura ~30 días
Mide métricas como tasa de no-presentación, tiempo medio de cobro y tasa de re-reserva para guiar mejoras.