Muhammad Arslan
Contrátame
Volver a proyectos

VCM

Una aplicación web basada en roles que reúne todo lo que necesita una comunidad residencial en una sola interfaz: propietarios, residentes, finanzas, reservas, solicitudes e informes.

Rol: Lead front-end engineerCronograma: 2025-2026Tipo: Web app (B2B SaaS)

React 19

React Router 7

Vite

TypeScript

SCSS

Jotai

SWR

Firebase Cloud Messaging

Panel de propietario de VCM con una comunidad de demostración, balance de ejemplo y solicitudes de servicio

Descripción general

VCM es el front-end de una plataforma de gestión de propiedades y comunidades que atiende a dos públicos muy diferentes desde la misma base de código. Los administradores lo utilizan para gestionar las operaciones: propiedades, residentes, finanzas, incidencias, informes y comunicación. Los propietarios y residentes lo usan para gestionar sus propios asuntos, incluidos pagos, solicitudes de servicio, reservas de instalaciones, documentos e información comunitaria. El producto reúne un conjunto de flujos de trabajo manuales y dispersos en un único lugar coherente.

El problema

Gestionar una comunidad residencial implica coordinar muchas partes móviles al mismo tiempo: registros de residentes y propietarios, solicitudes de mantenimiento y servicio, reservas de instalaciones, quejas, historiales de pago, estados de cuenta, informes de inspección e incidencias, y avisos. Cuando todo esto vive disperso en hojas de cálculo, cadenas de correos electrónicos y herramientas desconectadas, surgen descuidos. El desafío consistía en crear una única interfaz que diera servicio tanto a un equipo de operaciones como a los residentes a los que atienden —dos experiencias realmente distintas— manteniendo el producto rápido, coherente y fácil de mantener a medida que se incorporan más flujos de trabajo.

Mi rol y enfoque

Lideré el desarrollo del front-end: la arquitectura de la aplicación, la capa de datos compartida, los patrones de UI reutilizables y la estructura basada en roles que articula todo el sistema. Como principal colaborador en la base de código, establecí las convenciones que siguió el resto del trabajo. Mi prioridad fue evitar el error habitual en este tipo de aplicaciones: reconstruir la misma lógica de tablas, filtros y formularios para cada nueva entidad. En su lugar, creé un conjunto reducido de primitivas sólidas y una estructura base con control de permisos, de modo que añadir un nuevo flujo de trabajo se convirtió en una cuestión de composición y no de reinvención.

Stack tecnológico

FrameworkReact 19 with React Router 7
ConstrucciónVite
IdiomaTypeScript
EstilosSCSS, organised per feature
EstadoJotai for app-wide state (auth, sidebar, selected property, notifications)
DatosSWR over a shared Axios client, with automatic auth handling
NotificacionesFirebase Cloud Messaging
InformesRecharts for dashboards; @react-pdf/renderer and CSV utilities for exports

Características clave

Dos experiencias basadas en rolesinterfaces base independientes para administradores y propietarios que dirigen a los usuarios al lugar adecuado y controlan el acceso.
Navegación con control de permisosla barra lateral se genera a partir de los permisos reales de cada usuario, por lo que cada persona solo ve lo que tiene autorización para utilizar.
Una capa de datos compartidaun único flujo de solicitudes inyecta encabezados de autenticación y de dispositivo, almacena en caché con SWR y gestiona sesiones expiradas redirigiendo al usuario al inicio de sesión de forma limpia.
Primitivas de funcionalidad reutilizablestablas de listado con paginación, filtros vinculados a la URL, formularios modales, tarjetas con gráficos, subida de archivos y botones de exportación a partir de los cuales se construye toda la aplicación.
Cobertura operativasolicitudes de servicio, reserva de instalaciones y calendario comunitario, pantallas financieras (pagos, estados de cuenta, facturas, recordatorios), gestión de usuarios y unidades, e informes.
Notificaciones pushMensajería con Firebase y notificaciones toast dentro de la aplicación.
Exportaciones a PDF y CSVpara los flujos financieros y de informes que requieren salidas sin conexión o listas para su presentación.

Galería

Espacio de trabajo de ejemplo de propietario de VCM con pagos, documentos y eventos comunitarios
Gráficos de incidencias y solicitudes de servicio de VCM con registros sintéticos

Desafíos y soluciones

El reto principal fue la amplitud del alcance: decenas de tipos de entidades, cada una requiriendo listar, filtrar, crear, editar y exportar, para dos roles de usuario. Reescribir eso para cada funcionalidad habría dado lugar a una aplicación inmantenible. Lo resolví mediante primitivas reutilizables y un modelo de navegación configurable guiado por permisos, de modo que la interfaz se adapta a lo que otorga el backend sin menús fijos en el código ni duplicación de lógica.

La otra necesidad recurrente era un estado capaz de afrontar escenarios reales de uso. Gestioné la paginación y el filtrado de listas mediante los parámetros de la URL, lo que permite compartir vistas, mantiene el funcionamiento natural de avance y retroceso del navegador y preserva el estado de las tablas tras recargar. Centralicé la autenticación en el estado compartido y en la capa de solicitudes para que los componentes de funcionalidad sigan siendo ligeros, e integré un límite de errores (error boundary), estados de carga y una redirección limpia al expirar la sesión, evitando que un panel complejo falle en silencio.

Resultado

VCM es un front-end único que atiende de manera efectiva a ambas partes de la gestión comunitaria. Los equipos de operaciones administran todo el ciclo de vida de las propiedades desde un espacio de trabajo de administración, y los residentes gestionan por sí mismos pagos, solicitudes, reservas y documentos. Al estar desarrollado sobre primitivas compartidas y una estructura con control de permisos, la base de código sigue escalando a medida que se añaden nuevos flujos de trabajo en lugar de volverse más pesada con cada uno.

¿Tienes un problema de producto similar?

Comparte el producto actual, el resultado que necesitas y las limitaciones que ya existen en el camino. Usaré eso para definir un primer hito razonable.

servicios de desarrollo SaaS
Inicia el brief de tu proyecto
Todos los proyectosSiguiente proyectoZED (My Islamic Reminders)
VCM: Plataforma de gestión de propiedades y comunidades (Front-end en React) | Muhammad Arslan