Durante los últimos años, he desarrollado aplicaciones web utilizando un enfoque tradicional: PHP «vanilla» para el backend y React como frontend, comunicándose a través de APIs REST. Este stack me ha permitido construir un ERP a medida en mi trabajo en FARAMAX, donde he estado implicado en todas las capas del desarrollo. Sin embargo, durante el desarrollo de mi Trabajo de Fin de Grado (TFG), he decidido experimentar con Laravel e Inertia.js para ver cómo cambia la arquitectura y el flujo de trabajo al adoptar un stack más integrado.
¿Qué es Inertia.js y por qué me interesó?
Inertia.js actúa como un puente entre el backend y el frontend, permitiéndote crear aplicaciones monolíticas modernas sin tener que construir una API REST completa. Utiliza rutas del backend (Laravel, en mi caso) que devuelven componentes React directamente, eliminando la necesidad de definir endpoints JSON para cada acción. Esto me llamó la atención especialmente porque simplifica la estructura y reduce la duplicación lógica entre backend y frontend.
🛠️ Mi enfoque anterior: PHP Vanilla + API REST + React
Antes de probar Laravel e Inertia.js, mi flujo era el siguiente:
- Usaba PHP puro para construir APIs REST.
- React se encargaba completamente del frontend, llamando a estas APIs.
- El backend y el frontend vivían como proyectos separados, normalmente en carpetas distintas, y la comunicación entre ellos era estrictamente vía HTTP.
- Manejaba la autenticación mediante sesiones o tokens, lo que implicaba lógica duplicada o compleja en ambos lados.
- El enrutamiento del frontend (React Router) y del backend eran mundos separados.
Este enfoque, aunque flexible, me obligaba a mantener mucha duplicación de lógica y a diseñar cuidadosamente las interfaces API incluso para cosas muy básicas como validaciones o redirecciones.
🚀 Transición a Laravel + Inertia.js + React
Con Laravel e Inertia, el paradigma cambia bastante:
- Laravel sigue siendo el motor de todo, desde el enrutamiento hasta las validaciones y middleware.
- Inertia permite renderizar directamente componentes React desde las rutas de Laravel, como si fueran vistas Blade, pero modernas.
- Ya no es necesario crear una API REST para cada acción. Basta con devolver un componente con los datos adecuados.
- Validaciones, flashes, redirecciones, errores… todo se maneja desde Laravel, y React los recibe de forma transparente.
- La estructura del proyecto se unifica: ya no hay una «separación física» entre backend y frontend, lo cual facilita el mantenimiento.
📈 Ventajas que he notado
- Curva de aprendizaje rápida (si ya dominas Laravel y React).
- Ahorro de tiempo en el desarrollo: ya no tengo que escribir endpoints JSON para cada operación.
- Validaciones y errores controlados desde Laravel, lo que centraliza y simplifica el flujo.
- La navegación entre páginas es más fluida gracias a Inertia y el sistema de enlaces tipo SPA.
- Todo está en el mismo contexto, lo cual favorece un desarrollo más coherente y menos propenso a errores.
⚠️ Desventajas o retos que he encontrado
- Rompe con el modelo mental clásico de separación de backend y frontend, lo cual puede costar al principio.
- Inertia requiere entender bien cómo funciona el paso de props y cómo mantener el estado entre cambios de página.
- Algunas herramientas del ecosistema React (como Redux o librerías externas que esperan una API REST) no encajan directamente.
- El desarrollo «monolítico» puede sentirse algo restrictivo si vienes del mundo microservicios o SPAs puras.
🤔 ¿Ha cambiado mi forma de trabajar?
Sí, sin duda. Antes dedicaba gran parte del tiempo a:
- Diseñar esquemas de endpoints y respuestas JSON.
- Gestionar duplicación de validaciones y estructuras de datos.
- Pensar cómo sincronizar el estado del frontend con la lógica del backend.
Ahora, con Laravel + Inertia.js + React, el desarrollo es mucho más directo. Laravel se encarga de la lógica del negocio y de presentar los datos, mientras React simplemente los renderiza y gestiona la interacción del usuario. Todo se siente más acoplado, pero también más eficiente si lo que buscas es productividad en el desarrollo de una aplicación completa.
🧪 Conclusión
Laravel e Inertia.js no son para todos los proyectos, pero en contextos donde controlas el backend y el frontend, y buscas productividad, son una combinación poderosa. Para mí ha sido una evolución natural desde PHP puro y APIs REST hacia un modelo más moderno, sin renunciar a lo que ya conocía de React.
Este cambio también me ha permitido entender mejor las ventajas de un monolito moderno bien diseñado, y me ha abierto nuevas posibilidades de estructuración de proyectos, especialmente para aplicaciones internas como ERP o dashboards administrativos.