Swiss Premier
Plataforma móvil y web de cobranza para cobradores de campo que trabajan puerta a puerta sin señal — registro de pagos offline-first, recibos en PDF generados en el dispositivo y un panel administrativo que convierte los datos en rutas y reportes.
Un cobrador se pasa el día en la calle, tocando puertas. Recibe un pago, anota una visita, entrega un recibo — y lo hace parado en una banqueta donde la señal cae a cero. Si la app necesita conexión para registrar ese pago, la app no sirve. El dinero ya cambió de manos de cualquier forma; el único trabajo del software es no perder nunca el registro de eso.
Swiss Premier es la plataforma construida alrededor de esa realidad: una app móvil para los cobradores en campo, y un panel web para la oficina que asigna sus rutas y lee de vuelta todo lo que capturaron.
Qué hace
La app de campo (móvil). Cada cobrador abre la app con los clientes de su ruta asignada. Para cada visita registra qué pasó, anota un pago (abono) contra la deuda pendiente del cliente y genera un recibo estilo impreso en el momento — todo desde un teléfono, en Android o iOS. La app lleva el saldo de deuda por cliente, guarda el historial de abonos y permite editar o reimprimir un recibo anterior. Está hecha para seguir funcionando cuando la conexión no.
El panel administrativo (web). El lado de oficina maneja toda la operación: crea rutas, asigna cobradores y clientes a cada una, registra y edita clientes, y revisa la actividad de pagos. Desde ahí los supervisores generan los reportes con los que el negocio realmente opera — cobrado vs. no cobrado por ruta del día, estado semanal de ruta, histórico de abonos por cliente, cortes específicos y respaldos de clientes — exportados como documentos descargables (PDF/CSV). El acceso está controlado por rol, así que cobradores y supervisores solo ven lo que les corresponde.
Por dentro
Offline-first, por diseño. La app móvil trata la red como opcional. Los datos de clientes y la sesión del cobrador se persisten localmente con Ionic Storage, y el estado crítico se escribe de forma redundante en varias capas de almacenamiento con una verificación de integridad que las compara para detectar inconsistencias — de modo que una conexión caída, un proceso cerrado o una batería muerta no borran el trabajo del día. Un service worker registrado cachea el shell de la app para que arranque y funcione sin un viaje al servidor. Cuando el dispositivo vuelve a estar en línea, los pagos y visitas capturados se reconcilian contra el backend.
Recibos generados en el dispositivo. El recibo no es un render del servidor esperando conexión — se construye ahí mismo en el teléfono con pdfMake, se escribe al sistema de archivos del dispositivo mediante Capacitor y se abre para imprimir o se comparte por la hoja nativa de compartir. Un cobrador sin una sola barra de señal aún puede entregarle al cliente un recibo en regla. El código distingue limpiamente entre nativo (escribir archivo, abrir con el sistema) y web (descarga directa).
El stack
- Móvil — Ionic 8 + Angular 18, empaquetada con Capacitor para Android e iOS; Ionic Storage (con motor SQLite) para persistencia offline, un service worker para el arranque sin conexión, pdfMake para los recibos en el dispositivo, y Capacitor Filesystem / Share / File Opener para manejarlos e imprimirlos.
- Web — panel administrativo en Angular 18 con Angular Material y Tailwind CSS, pdfMake para la salida de documentos, y ruteo protegido por rol.
- Plataforma — Firebase (autenticación, distribución y servicios de proyecto), con un backend en NestJS sirviendo a ambos clientes sobre una API REST compartida.
Vale la pena mencionar
Swiss Premier está en producción y en uso diario — los cobradores corren sus rutas asignadas desde la app móvil mientras la oficina los monitorea a través del panel. Se distribuye de forma privada al equipo de cobranza, no por las tiendas públicas. El backend fue una colaboración de equipo; yo construí la app móvil en Ionic + Angular y el panel administrativo en Angular, fui dueño del UX/UI y me encargué del despliegue de ambos. Los problemas interesantes de ese lado no eran vistosos: lograr que la captura de pagos sobreviva a una conexión muerta, generar un recibo confiable en un teléfono sin señal, y darle forma a un dominio de rutas y deudas en una interfaz por la que un cobrador no técnico pueda volar con una sola mano parado en una puerta. Ese es el trabajo — software que tiene que estar bien en el momento exacto en que la red no está ahí para ayudar.
¿Un café y platicamos?
¿Te gustó lo que leíste? Construyo productos así de punta a punta — y siempre estoy para una buena plática. Hablemos del tuyo, o nomás intercambiamos ideas con un café.