Desarrollador Full Stack: Spring Boot y React

Job ID: 40038090

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.