Logros
- Pasarela Redsys propia en producción con clientes reales
- Unas 100 propiedades y entre 3 y 6 reservas diarias automatizadas
- Motor de precios con temporadas, tarifas mensuales y descuentos
- Formación y coordinación de 4 desarrolladores en prácticas
Contexto
Vanrays se dedica al alquiler y la gestión de alrededor de 100 propiedades, con cinco áreas: limpieza y mantenimiento, alquiler, remodelación, tecnología y administración. La dirección quería transformar la inmobiliaria en una empresa tecnológica: que un cliente pudiera seleccionar un apartamento y pagarlo online.
El punto de partida:
- Las reservas, la contabilidad y los bloqueos de propiedades se llevaban en hojas de cálculo de Google.
- No existía entorno de pruebas ni departamento técnico.
- No había metodología de gestión de proyectos.
- Los cinco departamentos intervenían en cada reserva.
- La web funcionaba sobre WordPress con plugins comerciales de Crocoblock, alojada en Hostinger.
- La empresa había sufrido fraudes y reclamaciones con pasarelas de pago anteriores.
Mi rol
Entré como desarrollador Full Stack y fui el único soporte técnico de la empresa. Diseñé la arquitectura, desarrollé la plataforma, la puse en producción y la mantuve, reportando a la dirección de Recursos Humanos.
Formé y coordiné a cuatro desarrolladores en prácticas, que se incorporaron de forma sucesiva, con un máximo de dos a la vez: repartía tareas, revisaba su código y daba sesiones de formación.
Recomendé construir la plataforma sobre un stack propio en Laravel, con una migración progresiva: automatizar el WordPress existente mientras se desarrollaba el nuevo sistema en paralelo. La dirección prefirió conservar sus herramientas actuales, y siendo el único programador no había margen para sostener dos sistemas a la vez. La solución se construyó sobre el WordPress de la empresa y sus plugins comerciales, que no se podían modificar.
Qué construí
Plugin de reservas VR3
Plugin propio de WordPress que evolucionó en tres versiones a medida que la empresa pedía más funciones: empezó mostrando el precio calculado por días y terminó gestionando el pago, el bloqueo de la propiedad y su sincronización con Google Calendar, funcionando sobre JetBooking y JetFormBuilder.
- Fechas elegidas por el cliente → cálculo del precio en el servidor → resumen en pantalla → formulario de datos → pago en Redsys
El frontend se organiza en módulos JavaScript independientes que se comunican por eventos: uno calcula el precio, otro lo pinta y otro lo traslada al formulario de pago, de modo que el cliente paga exactamente el importe que ha visto.
Motor de precios
El precio de cada noche se calcula en el servidor siguiendo un orden de prioridad:
- Temporada → tarifa diaria del mes → tarifa mensual prorrateada → tarifa base
Hasta 27 noches se aplica la tarifa de estancia corta, noche a noche. Desde 28 noches se aplica la tarifa mensual, sin temporadas y con descuentos del 5 %, 8 % o 10 % según los meses completos, solo sobre las noches. La limpieza y la fianza siguen sus propias reglas según la duración. Implementé y estructuré estas reglas de negocio en el backend: el navegador nunca calcula precios.
Pagos con Redsys
Redsys se eligió tras revisar el historial de fraude y reclamaciones con otras pasarelas. Implementé la integración sin plugins de pago: firma HMAC-SHA256 del protocolo de Redsys, verificación de la notificación del banco y control para que un mismo pago no se procese dos veces.
- Pago verificado → reserva registrada → fechas bloqueadas en la web → evento en Google Calendar → correos al cliente y al equipo
Si el pago falla, Redsys informa al cliente y este vuelve a la página de reserva sin que se bloquee nada.
Intranet de gestión
Aplicación propia en PHP, HTML, CSS y JavaScript, con su propia base de datos, que actúa como puente entre WordPress y Google Workspace. Se conecta a WordPress mediante WP-CLI y webhooks, a través de un plugin creado para mantener esa conexión, y a Google Sheets y Google Calendar mediante sus APIs. Lee, crea, actualiza y borra datos en ambos sentidos.
Desde la intranet el equipo cambia precios y temporadas de una, varias o todas las propiedades con un clic, mediante un selector.
Acceso único entre intranet y WordPress
Para que el equipo no tuviera que iniciar sesión dos veces, desarrollé un acceso único basado en tokens firmados con HMAC-SHA256, con caducidad y validación del emisor. WordPress verifica el token, abre la sesión y crea la cuenta si no existía.
Carga selectiva del plugin
Cada recarga de página disparaba entre 200 y 500 cargas de recursos entre imágenes, estilos y plugins, y no había un punto claro donde intervenir. Diseñé un «context gate»: una comprobación que se ejecuta antes de cargar el plugin y solo lo arranca en páginas reales y en llamadas AJAX autorizadas, nunca en recursos estáticos, tareas programadas ni el panel de administración.
Infraestructura y método de trabajo
- Cuatro entornos aislados en el mismo servidor: producción, pruebas, formación e intranet, cada uno con su subdominio y su base de datos.
- Despliegue con Git: los cambios se integraban desde desarrollo en la rama principal y se publicaban desde ella.
- Método de trabajo: auditar → modificar → probar → verificar → punto de control → desplegar.
- Registro de actividad propio para diagnosticar incidencias en producción.
- Docker en los entornos de desarrollo y formación.
Resultado
- El sistema entró en producción y, desde enero de 2026, los clientes pagaron online con Redsys.
- Se procesaban entre 3 y 6 reservas al día sobre un parque de aproximadamente 100 propiedades.
- El cobro, el bloqueo de la propiedad, el mensaje de bienvenida y la toma de datos del cliente pasaron a hacerse sin intervención manual.
- La empresa pasó de no tener entorno de pruebas a trabajar con entornos separados y cuatro personas formadas para mantener la plataforma.
- Quedó pendiente una fuente de verdad única: las reservas seguían entrando por web, teléfono y correo, y su centralización era la siguiente fase.
Qué demuestra
- Convertir reglas de negocio en un motor de cálculo trazable.
- Integrar sistemas que no controlo: plugins comerciales, pasarela bancaria y Google Workspace.
- Construir infraestructura y método de trabajo donde no existían.
- Tomar decisiones técnicas dentro de restricciones de la organización.
- Liderar técnicamente siendo el único responsable mientras formaba a un equipo.
Nota
El código pertenece a Vanrays y es privado, por eso no hay repositorio ni demo. El enlace lleva a la web pública de la empresa, que puede haber cambiado desde mi salida.