Saltar al contenido
Caso · 04 / 09← Todos los trabajos

HPC

Cuatro productos para el Hospital Privado de Comunidad de Mar del Plata, en web y en el teléfono, con un mismo design system.

Rol
Arquitectura y desarrollo completo
Stack
Next.js 16, Expo / React Native, TypeScript, TanStack Query, Turborepo, Go
Índice del ecosistema
Índice del ecosistemaUn paquete de tokens para web y nativo
(01) El problema

El hospital tenía el diseño de cuatro productos: una app para pacientes, el consultorio, la recepción y un panel de dirección. Eran 60 pantallas entre web de escritorio y teléfono. Además, la paleta del diseño no cumplía WCAG 2.1 AA, y la propuesta lo prometía.

Mi rolConvertí el diseño en cinco apps que funcionan y una base común para web y nativo.
(02) ResultadosContados en el código
61pantallas comparadas píxel a píxel contra una línea de base
53pares de color que cumplen WCAG 2.1 AA, verificados en CI
10paquetes compartidos entre cinco apps
(03) Arquitectura

Tres decisiones que lo definieron.

  1. 01

    Un paquete de tokens para web y nativo

    Por qué. Color, tipografía, espaciado e íconos viven en TypeScript, en @hpc/tokens. Las primitivas web y las de React Native leen de ahí. La app de pacientes se ve igual que las de escritorio sin copiar valores.

    El costo. Se comparten tokens y lógica, no componentes. Hay dos librerías de primitivas que mantener a la par: CSS Modules en web y React Native en el teléfono.

  2. 02

    El contrato de la API se genera, no se escribe

    Por qué. La API en Go publica OpenAPI 3.1 desde sus propios tipos. Un paquete lo convierte en los tipos de TypeScript que importa el cliente de la API. Un satisfies rompe el build si el backend agrega un valor que nadie mapeó.

    El costo. Hay un paso de generación, y el backend manda sobre la forma de los datos. Una prueba dorada detecta un contrato viejo, pero sólo cuando corre.

  3. 03

    El tiempo real avisa qué cambió, no cómo quedó

    Por qué. Cada app abre un solo WebSocket y se suscribe a temas como una agenda o una sala de espera. Un aviso sólo invalida el caché, y la pantalla vuelve a pedir por el camino de siempre. Un turno sacado en la app aparece solo en recepción.

    El costo. Cada aviso cuesta un pedido extra. Las ráfagas dispararían varios renders del servidor en Next.js, así que el canal puede agrupar avisos.

(04) GaleríaSeguí scrolleando →
Índice del ecosistema
Índice del ecosistema · La entrada a los cuatro productos, armada con los tokens compartidos.
Mi HPC, app de pacientes
Mi HPC, app de pacientes · Un solo código en Expo para iOS, Android y web. En el teléfono, los datos se cargan con TanStack Query.
Agenda de recepción
Agenda de recepción · Los turnos del día, con check-in, estado de la cobertura y la sala de espera.
Resumen de dirección
Resumen de dirección · Indicadores, ocupación de camas y alertas. Las alertas salen de umbrales, no de textos fijos.
(05) Qué haría después
01Sumar el login real con Keycloak por OIDC y PKCE, para que cada rol vea sólo lo suyo.
02Conectar las 17 pantallas de pacientes que todavía leen literales, como el visor de imágenes y la videoconsulta.
03Correr la comparación de píxeles y las pruebas de integración con base en CI. Hoy sólo corren en local.
Próximo proyecto · 05 / 09
Posta →Red de delivery: landing, admin y mapas en vivo
Caso · 04 / 09

HPC

Cuatro productos para el Hospital Privado de Comunidad de Mar del Plata, en web y en el teléfono, con un mismo design system.

Rol
Arquitectura y desarrollo completo
Stack
Next.js 16, Expo / React Native, TypeScript, TanStack Query, Turborepo, Go
HPC
(01) El problema

El hospital tenía el diseño de cuatro productos: una app para pacientes, el consultorio, la recepción y un panel de dirección. Eran 60 pantallas entre web de escritorio y teléfono. Además, la paleta del diseño no cumplía WCAG 2.1 AA, y la propuesta lo prometía.

Mi rolConvertí el diseño en cinco apps que funcionan y una base común para web y nativo.
(02) Resultados
61pantallas comparadas píxel a píxel contra una línea de base
53pares de color que cumplen WCAG 2.1 AA, verificados en CI
10paquetes compartidos entre cinco apps
(03) Arquitectura

Tres decisiones que lo definieron.

01

Un paquete de tokens para web y nativo

Por qué. Color, tipografía, espaciado e íconos viven en TypeScript, en @hpc/tokens. Las primitivas web y las de React Native leen de ahí. La app de pacientes se ve igual que las de escritorio sin copiar valores.

El costo. Se comparten tokens y lógica, no componentes. Hay dos librerías de primitivas que mantener a la par: CSS Modules en web y React Native en el teléfono.

02

El contrato de la API se genera, no se escribe

Por qué. La API en Go publica OpenAPI 3.1 desde sus propios tipos. Un paquete lo convierte en los tipos de TypeScript que importa el cliente de la API. Un satisfies rompe el build si el backend agrega un valor que nadie mapeó.

El costo. Hay un paso de generación, y el backend manda sobre la forma de los datos. Una prueba dorada detecta un contrato viejo, pero sólo cuando corre.

03

El tiempo real avisa qué cambió, no cómo quedó

Por qué. Cada app abre un solo WebSocket y se suscribe a temas como una agenda o una sala de espera. Un aviso sólo invalida el caché, y la pantalla vuelve a pedir por el camino de siempre. Un turno sacado en la app aparece solo en recepción.

El costo. Cada aviso cuesta un pedido extra. Las ráfagas dispararían varios renders del servidor en Next.js, así que el canal puede agrupar avisos.

(04) Galería
Índice del ecosistema
Índice del ecosistema · La entrada a los cuatro productos, armada con los tokens compartidos.
Mi HPC, app de pacientes
Mi HPC, app de pacientes · Un solo código en Expo para iOS, Android y web. En el teléfono, los datos se cargan con TanStack Query.
Agenda de recepción
Agenda de recepción · Los turnos del día, con check-in, estado de la cobertura y la sala de espera.
Resumen de dirección
Resumen de dirección · Indicadores, ocupación de camas y alertas. Las alertas salen de umbrales, no de textos fijos.
(05) Qué haría después
01Sumar el login real con Keycloak por OIDC y PKCE, para que cada rol vea sólo lo suyo.
02Conectar las 17 pantallas de pacientes que todavía leen literales, como el visor de imágenes y la videoconsulta.
03Correr la comparación de píxeles y las pruebas de integración con base en CI. Hoy sólo corren en local.
Próximo proyectoPosta →
Nahuel SantillánES