Desarrollador Full Stack: Spring Boot y React
Budget: $30 – $250 USD
Buscamos un desarrollador Full Stack con experiencia comprobada en Spring Boot (Java) y React (JavaScript) para construir una aplicación web funcional para la gestión y consulta de reservas de hotel. El objetivo principal es desarrollar una API robusta en el backend y un frontend dinámico que permita a los usuarios filtrar y visualizar reservas de manera eficiente.
Requerimientos Clave y Alcance del Trabajo
El proyecto se divide en dos componentes principales: el Backend (API) y el Frontend (Interfaz de Usuario).
1. Backend: API REST con Spring Boot
Se debe desarrollar una API REST utilizando Spring Boot (Java) que maneje la lógica de negocio y la gestión de datos.
Entidad Principal: Reserva
Implementar una entidad Reserva con los siguientes atributos: id (Long), nombreCliente (String), fechaEntrada (Date), fechaSalida (Date), tipoHabitacion (String - "individual", "doble", "suite"), y precio (Double).
Gestión de Datos
Crear un servicio (ReservaService) que cargue un conjunto inicial de datos de reservas desde un archivo JSON al iniciar la aplicación. Se espera que este servicio también contenga la lógica de negocio para las operaciones de búsqueda.
Controlador (Endpoints)
Desarrollar un controlador (ReservaController) con los siguientes endpoints GET para la consulta:
/reservas: Obtener todas las reservas.
/reservas/tipo: Filtrar reservas por tipoHabitacion.
/reservas/rango-fechas: Filtrar reservas por un rango de fechas (fechaEntrada y fechaSalida).
Herramientas y Configuración
Configuración adecuada del pom.xml con dependencias como Spring Web y cualquier librería necesaria para el manejo de JSON (por ejemplo, Jackson).
Se requiere probar y documentar la funcionalidad de todos los endpoints utilizando Postman antes de la integración con el frontend.
2. Frontend: Interfaz de Usuario con React
Se debe crear una interfaz de usuario limpia y funcional utilizando React.
Formulario de Búsqueda
Implementar un formulario que permita al usuario ingresar los siguientes criterios de búsqueda:
Rango de fechas: Campos para Fecha de Entrada y Fecha de Salida.
Tipo de habitación: Un campo de selección (select) con las opciones "individual", "doble" y "suite".
Visualización de Resultados
Utilizar Axios (o fetch) para consumir los endpoints de filtrado del backend.
Mostrar las reservas resultantes en una tabla clara y bien organizada, mostrando todos los atributos de la entidad Reserva.
Diseño y Experiencia de Usuario (UX)
Aplicar un estilo moderno y responsivo al formulario y la tabla, asegurando una presentación clara y visualmente atractiva.
Retos Adicionales (Bono/Extensión)
Los candidatos que puedan abordar los siguientes puntos tendrán una ventaja o podrán negociar un presupuesto adicional:
Filtro de Precio Máximo: Extender el backend y el frontend para incluir un filtro adicional que permita buscar reservas con un precio inferior o igual a un valor máximo especificado.
Validación del Formulario: Implementar validaciones en el formulario de búsqueda de React para asegurar que el usuario introduzca fechas válidas (p. ej., fecha de salida posterior a la de entrada) y que todos los campos requeridos estén seleccionados antes de enviar la solicitud.
Tecnología Requerida
Backend: Spring Boot (Java 17+), RESTful API, JSON.
Frontend: React, JavaScript/TypeScript, Axios.
Herramientas: Git, Postman.
Entregables y Plazos
Entregable 1 (Backend): Código fuente del backend en un repositorio Git, con la base de datos de JSON cargada, y una colección de Postman funcional que demuestre todos los endpoints de consulta.
Entregable 2 (Frontend): Código fuente del frontend en el mismo repositorio, con la aplicación integrada y probada, lista para su ejecución local.
Documentación: Un archivo README.md con las instrucciones claras para la configuración y ejecución de ambos proyectos (backend y frontend) por separado.
Requerimientos Clave y Alcance del Trabajo
El proyecto se divide en dos componentes principales: el Backend (API) y el Frontend (Interfaz de Usuario).
1. Backend: API REST con Spring Boot
Se debe desarrollar una API REST utilizando Spring Boot (Java) que maneje la lógica de negocio y la gestión de datos.
Entidad Principal: Reserva
Implementar una entidad Reserva con los siguientes atributos: id (Long), nombreCliente (String), fechaEntrada (Date), fechaSalida (Date), tipoHabitacion (String - "individual", "doble", "suite"), y precio (Double).
Gestión de Datos
Crear un servicio (ReservaService) que cargue un conjunto inicial de datos de reservas desde un archivo JSON al iniciar la aplicación. Se espera que este servicio también contenga la lógica de negocio para las operaciones de búsqueda.
Controlador (Endpoints)
Desarrollar un controlador (ReservaController) con los siguientes endpoints GET para la consulta:
/reservas: Obtener todas las reservas.
/reservas/tipo: Filtrar reservas por tipoHabitacion.
/reservas/rango-fechas: Filtrar reservas por un rango de fechas (fechaEntrada y fechaSalida).
Herramientas y Configuración
Configuración adecuada del pom.xml con dependencias como Spring Web y cualquier librería necesaria para el manejo de JSON (por ejemplo, Jackson).
Se requiere probar y documentar la funcionalidad de todos los endpoints utilizando Postman antes de la integración con el frontend.
2. Frontend: Interfaz de Usuario con React
Se debe crear una interfaz de usuario limpia y funcional utilizando React.
Formulario de Búsqueda
Implementar un formulario que permita al usuario ingresar los siguientes criterios de búsqueda:
Rango de fechas: Campos para Fecha de Entrada y Fecha de Salida.
Tipo de habitación: Un campo de selección (select) con las opciones "individual", "doble" y "suite".
Visualización de Resultados
Utilizar Axios (o fetch) para consumir los endpoints de filtrado del backend.
Mostrar las reservas resultantes en una tabla clara y bien organizada, mostrando todos los atributos de la entidad Reserva.
Diseño y Experiencia de Usuario (UX)
Aplicar un estilo moderno y responsivo al formulario y la tabla, asegurando una presentación clara y visualmente atractiva.
Retos Adicionales (Bono/Extensión)
Los candidatos que puedan abordar los siguientes puntos tendrán una ventaja o podrán negociar un presupuesto adicional:
Filtro de Precio Máximo: Extender el backend y el frontend para incluir un filtro adicional que permita buscar reservas con un precio inferior o igual a un valor máximo especificado.
Validación del Formulario: Implementar validaciones en el formulario de búsqueda de React para asegurar que el usuario introduzca fechas válidas (p. ej., fecha de salida posterior a la de entrada) y que todos los campos requeridos estén seleccionados antes de enviar la solicitud.
Tecnología Requerida
Backend: Spring Boot (Java 17+), RESTful API, JSON.
Frontend: React, JavaScript/TypeScript, Axios.
Herramientas: Git, Postman.
Entregables y Plazos
Entregable 1 (Backend): Código fuente del backend en un repositorio Git, con la base de datos de JSON cargada, y una colección de Postman funcional que demuestre todos los endpoints de consulta.
Entregable 2 (Frontend): Código fuente del frontend en el mismo repositorio, con la aplicación integrada y probada, lista para su ejecución local.
Documentación: Un archivo README.md con las instrucciones claras para la configuración y ejecución de ambos proyectos (backend y frontend) por separado.