Proyecto para cliente
RussianPost – Portal corporativo para envíos postales estatales

Tecnologías
Servicios
- →Diseño y desarrollo de biblioteca de componentes personalizada
- →Envoltorio de Kendo Grid con API tipada (modos servidor/cliente, conversión de tipos, renderizadores personalizados)
- →Hook useCustomGridFilters para vistas por pestañas memoizadas
- →Adaptador CustomGridRedux — integración completa con Redux con compatibilidad retroactiva
- →Scrum mastering: ceremonias, eliminación de impedimentos, seguimiento de velocidad
Entregables
- ✓CustomGrid — una única tabla de datos estandarizada usada en todo el portal
- ✓Modos de paginación servidor y cliente con conversión automática de tipos desde estructuras de la API
- ✓Vistas de filtros por pestañas con recuento de elementos en vivo mediante el hook useCustomGridFilters
- ✓Capa de tabla conectada a Redux (selección, paginación, orden, modo de edición en el store)
- ✓UX consistente en todas las pantallas cargadas de datos — las nuevas vistas de tabla toman horas, no días
Desafío
El portal interno de Russian Post — usado por decenas de miles de empleados — había crecido de forma orgánica durante años. Cada módulo manejaba los datos tabulares de forma distinta: distinta lógica de paginación, distintos patrones de filtrado, distintos modos de edición. El resultado era una experiencia de usuario inconsistente y un coste de mantenimiento creciente cada vez que se necesitaba una nueva pantalla de datos.
Además, el trabajo se realizaba bajo estrictas restricciones empresariales: aprobaciones de cambios en varios niveles, versionado de la API de SharePoint y políticas de seguridad que descartaban la mayoría de las herramientas SaaS de terceros.
Descubrimiento
Tras mapear las pantallas existentes quedó claro que casi todas necesitaban lo mismo: paginación del lado del servidor, ordenación y filtrado de columnas, modo de edición en línea y vistas por pestañas que cambiaban el conjunto de datos sin recargar la página. El problema no eran los datos — era la falta de un contrato compartido sobre cómo mostrarlos.
Opciones consideradas
- Usar Kendo Grid directamente en todas partes — descartado. Cada equipo lo integraba de forma distinta, perpetuando la inconsistencia.
- Construir una tabla personalizada desde cero — descartado. Demasiado arriesgado dado el calendario empresarial y la amplitud de funciones requeridas.
- Envoltorio estandarizado sobre Kendo Grid — elegido. Encapsular todo el comportamiento común detrás de una única API tipada, mantener Kendo como motor y aplicar la consistencia mediante la capa de abstracción.
Decisión
El enfoque de envoltorio ofreció la mejor relación entre control y riesgo. Kendo se encargaba del renderizado y la virtualización; el envoltorio poseía el contrato de la API: metadatos de campos, modos de paginación servidor/cliente, conversión de tipos, renderizadores de celda personalizados y columnas de estado. Se añadió encima una capa adaptadora de Redux separada (CustomGridRedux) para las pantallas que necesitaban que el estado de la tabla (selección, paginación, orden) viviera en el store — manteniéndola compatible con las tablas que no lo necesitaban.
Implementación
CustomGrid acepta campos con metadatos, un array de datos y un método de carga. Admite dos modos de paginación — servidor (el total viene de la API, la tabla orquesta la obtención de datos) y cliente (dataQuery de Kendo lo maneja todo localmente) — más un modo combinado para añadir cambios locales a los datos del servidor. La conversión de tipos desde las estructuras del servidor a tipos de JS ocurre automáticamente mediante mapeos de campos, ahorrando código de transformación repetitivo en cada pantalla.
useCustomGridFilters es un hook memoizado que envuelve un conjunto de definiciones de filtros con nombre y renderiza una barra de herramientas de Kendo con recuentos en vivo por pestaña. Cambiar de pestaña modifica el conjunto de datos que alimenta la tabla sin recargar la página ni hacer peticiones adicionales.
CustomGridRedux es un adaptador ligero que envuelve CustomGrid y refleja la selección, la paginación, el orden, el filtro, el modo de edición y el estado de los campos en Redux — a través de acciones, reducers y selectores reselect dedicados — permaneciendo totalmente compatible con los usos existentes.
Recorrido del componente
Resultado
Ahora cada pantalla de datos del portal usa el mismo componente con la misma API. Añadir una nueva vista de tabla pasó de ser una tarea de integración de varios días a pasar una configuración de campos y una función de carga. El rol de Scrum Master junto con el trabajo técnico mantuvo estable la velocidad de entrega bajo bloqueos constantes del lado empresarial — las ceremonias se mantuvieron ágiles y los impedimentos se resolvían antes de frenar los sprints.
Disponible para colaboración por contrato
Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.
Agenda una llamada de 30 min