ProyectosProyecto para cliente

Set Hub Team — la app para el equipo del estudio

Una app nativa para iPhone y Android: el equipo ve su día, confirma reservas y tareas desde la propia notificación y graba las reuniones con clientes. Face ID al entrar, datos de clientes solo en memoria, y el widget y la pantalla de bloqueo muestran el rodaje sin nombres de clientes ni importes.

  • Expo SDK 58 · React Native 0.88
  • Swift · Kotlin
  • APNs · FCM directos
  • Live Activities · WidgetKit
  • Face ID · Keychain
Set Hub Team

En cifras

29rutas de API solo para la app del equipo: el rol recorta los datos en el servidor
30 sfuera de la app, y vuelve a bloquearse con Face ID o huella
0intermediarios para el push: Apple APNs con JWT ES256 y Google FCM v1, directamente desde el servidor
2 hde grabación de una reunión en el móvil: en partes de 20 minutos, con transcripción y marcas de tiempo

El problema

El equipo del estudio pasa el día de pie: recibe a los equipos de rodaje, recoloca las luces, cobra y contesta a los clientes. Abrir el CRM en el navegador del móvil para saber quién va después en la azotea es incómodo, y las notificaciones de las apps de mensajería se pierden entre las personales. Además, en el CRM están los teléfonos, los correos y los importes de los clientes, y esos datos no deben quedarse en la pantalla, en las capturas, en el selector de apps ni en las copias de seguridad.

Qué hay dentro

El día del estudio en una sola pantalla

«Today» muestra el rodaje en curso con cuenta atrás, la siguiente reserva, los contadores de consultas, mensajes, borradores y tareas, y el dinero del mes, solo si el rol da acceso a él. Al empleado le llega el día sin importes, pagos, canal ni contactos del cliente: el rol recorta los datos en el servidor, no los esconde en la interfaz.

Protección al nivel de una app bancaria

Se entra con correo y contraseña, y después funciona una llave del dispositivo guardada en el llavero solo de ese teléfono, sin sincronizar con iCloud. Face ID o huella al abrir y tras 30 segundos fuera de la app, contenido tapado en el selector de apps, capturas y grabación de pantalla bloqueadas en la versión publicada, datos de clientes solo en memoria, copia de seguridad de Android desactivada y red solo por https. Con una contraseña temporal no se entra, y cambiar la contraseña o el rol en el CRM anula la llave en todos los teléfonos.

Push directo a Apple y Google, con botones

El servidor firma él mismo las peticiones a APNs (HTTP/2, JWT ES256) y a FCM v1 con una cuenta de servicio de Google, sin Expo ni intermediarios. Una línea es una notificación; varias, un resumen. La notificación trae acciones: cerrar una tarea o asignarse una tarea o una consulta. El servidor las ejecuta incluso con la app cerrada, repetirlas es seguro y, si un compañero ya se ha asignado la consulta, la app lo dice.

Live Activity «Shoot in progress»

En la pantalla de bloqueo y en la Dynamic Island: qué set se está rodando, hasta qué hora, la cuenta atrás y una barra de progreso, además de cuántos rodajes quedan hoy. En Android, una notificación fija que desaparece sola al terminar la reserva. No hay nombres de clientes ni importes: la pantalla de bloqueo la ve todo el que está alrededor.

Widgets y «Capture» con un toque

Widgets «Today» para la pantalla de inicio y la pantalla de bloqueo del iPhone, y para la pantalla de inicio de Android: qué hay ahora, qué viene después y cuántas tareas hay. El sistema actualiza el widget en el minuto de inicio y de fin de cada reserva y a la medianoche del estudio, así que acierta incluso sin conexión. «Capture» se abre con un botón del Centro de control, con el botón de acción, con Siri y con Spotlight en el iPhone, y con un mosaico de ajustes rápidos en Android.

«Capture» en el bolsillo: confirmar, editar, rechazar

La misma lectura que en el CRM: escribes «Jane booked Rooftop Nov 20 2–6pm, $450 Peerspace» y obtienes un borrador de reserva con los campos dudosos resaltados. La cola de confirmación tiene menús y selectores de fecha nativos, y «confirmar todo» con un solo botón; un solape se rechaza explicando quién está ya y dónde. Las reservas, tareas, consultas y gastos nuevos se crean con las mismas funciones del servidor que en el CRM, así que las reglas y el registro son comunes.

Grabación de reuniones con clientes

Como una grabadora: onda, temporizador y pausa, y el teléfono se puede bloquear, porque la grabación sigue en segundo plano. El audio se graba en partes de 20 minutos; el servidor las une en un solo archivo sin recodificar, analizando a mano el contenedor MP4, y lo transcribe con marcas de tiempo parte por parte. Un par de minutos después aparece en «Capture» un borrador con el cliente, las fechas y el presupuesto, y el audio se puede escuchar saltando de frase en frase. El audio se guarda 7 días; la transcripción, para siempre.

Hojas, animaciones e informes de errores

El pago y el cambio de fecha, el estado y los puntos de control de una tarea se abren en hojas sobre la lista: formSheet nativos en iOS y Android. Las listas aparecen en cascada, la marca de «hecho» se pone al instante mientras la petición viaja al servidor, y todo respeta el ajuste del sistema «Reducir movimiento». Los errores de JavaScript de los teléfonos llegan al servidor anonimizados — con los correos y los números largos enmascarados — y se agrupan cuando son iguales.

Pantallas

Solo se entra con Face ID; tras 30 segundos fuera de la pantalla, la app se bloquea sola
Solo se entra con Face ID; tras 30 segundos fuera de la pantalla, la app se bloquea sola
Widget en la pantalla de inicio: qué se rueda ahora y qué viene después, sin nombres de clientes
Widget en la pantalla de inicio: qué se rueda ahora y qué viene después, sin nombres de clientes
Live Activity en la pantalla de bloqueo: set, hora y cuenta atrás
Live Activity en la pantalla de bloqueo: set, hora y cuenta atrás
El estado del pago, en una hoja sobre la reserva, sin cambiar de pantalla
El estado del pago, en una hoja sobre la reserva, sin cambiar de pantalla
Tareas del equipo: lo vencido en rojo, la prioridad y el siguiente punto de control
Tareas del equipo: lo vencido en rojo, la prioridad y el siguiente punto de control
Tarea con puntos de control: quién marcó cada uno como hecho y cuándo
Tarea con puntos de control: quién marcó cada uno como hecho y cuándo
«Capture» en el móvil: las reglas no están seguras del nombre del cliente y el campo queda resaltado
«Capture» en el móvil: las reglas no están seguras del nombre del cliente y el campo queda resaltado
El dinero del mes: solo para el propietario y el gestor principal
El dinero del mes: solo para el propietario y el gestor principal
Grabación de una reunión de hasta dos horas: la transcripción y el borrador irán a «Capture»
Grabación de una reunión de hasta dos horas: la transcripción y el borrador irán a «Capture»

Tecnologías

Expo SDK 58, React Native 0.88 y React 19 con React Compiler; la navegación es Expo Router con la barra de pestañas nativa: Liquid Glass en iOS 26 y Material 3 en Android. Los datos van con TanStack Query sin caché en disco: al cerrar la app, en el teléfono no quedan datos de clientes. El núcleo común con la app para clientes — formatos de hora según el reloj del estudio, el cliente de la API y los tipos de las respuestas — vive en un mismo monorrepositorio.

La parte nativa está escrita a mano: Live Activity, widgets y el botón del Centro de control, en Swift dentro de una extensión; el mosaico de ajustes rápidos y el receptor de toques en el widget, en Kotlin; y cada pieza, con su propio plugin de configuración de Expo. La compilación es local, con Xcode y Gradle, sin servicios de compilación en la nube. La app está montada y probada en el simulador de iPhone y el emulador de Android; la distribución al equipo por TestFlight llegará cuando se registre la cuenta de desarrollador del estudio.

¿Tu equipo necesita una herramienta en el bolsillo?

Cuéntanos qué hace tu gente sobre la marcha y qué tiene que abrir diez veces al día. Montaremos una app para iPhone y Android desde una sola base de código, con tus permisos y tu protección de datos.

WhatsApp