🧪 Laboratorio: Mini sistema de gestión de eventos¶
🌟 Objetivo¶
Construir una aplicación web funcional donde los estudiantes puedan:
- Registrar usuarios.
- Crear eventos asociados a un usuario.
- Listar los eventos de un usuario en particular.
Este laboratorio está diseñado para realizarse en un máximo de 2 horas.
⚙️ Tecnologías¶
- Backend: Java 21+, Spring Boot (Spring Web).
- Frontend: React 19 con Next.js 15.
- Comunicación: JSON vía fetch/Axios.
🔨 Alcance funcional¶
Backend - Spring Boot¶
Método | Ruta | Descripción |
---|---|---|
POST | /users |
Crear nuevo usuario |
GET | /users/{id}/events |
Obtener eventos del usuario |
POST | /users/{id}/events |
Crear evento para un usuario específico |
Modelo User
¶
id
: Longname
: String
Modelo Event
¶
id
: Longtitle
: Stringdescription
: StringuserId
: Long (referencia al usuario)
Endpoints Disponibles¶
Usuarios¶
POST /api/users
- Crear un nuevo usuarioGET /api/users
- Obtener todos los usuariosGET /api/users/{id}
- Obtener un usuario por IDPUT /api/users/{id}
- Actualizar un usuarioDELETE /api/users/{id}
- Eliminar un usuario
Eventos¶
POST /api/users/{userId}/events
- Crear un nuevo evento para un usuarioGET /api/users/{userId}/events
- Obtener todos los eventos de un usuarioGET /api/users/{userId}/events/{eventId}
- Obtener un evento por IDPUT /api/users/{userId}/events/{eventId}
- Actualizar un eventoDELETE /api/users/{userId}/events/{eventId}
- Eliminar un evento
Frontend - Next.js¶
Funcionalidades¶
- Página principal (
/users
):- Lista de usuarios.
- Formulario para registrar nuevo usuario.
- Página de usuario (
/users/[id]
):- Lista de eventos del usuario.
- Formulario para crear nuevo evento.
Utilizar fetch o axios para conectarse al backend. Se recomienda usar el enrutamiento dinámico de Next.js para /users/[id].
🧐 Conceptos que se pondrán en práctica¶
Backend | Frontend |
---|---|
Rutas RESTful con parámetros | Páginas dinámicas con rutas ([id].tsx ) |
Validación básica (campos vacíos) | Manejo de estado local con hooks |
Relaciones (usuario-evento) | Forms controlados y envío de datos |
DTOs / separación de modelos | Navegación entre vistas usando Next.js |
⏱️ Cronograma sugerido (2 horas)¶
Tiempo | Actividad |
---|---|
0-15m | Crear entidades y endpoints en Spring Boot |
15-30m | Implementar lógica de negocio |
30-40m | Probar API con Postman o curl |
40-60m | Crear frontend base con Next.js |
60-90m | Implementar vista de usuarios y eventos |
90-120m | Pruebas, mejoras, entrega de evidencias |
📂 Estructura esperada¶
Backend:¶
src/
├─ controller/
│ ├─ UserController.java
│ └─ EventController.java
├─ model/
│ ├─ User.java
│ └─ Event.java
└─ service/
└─ EventService.java
Frontend (Next.js):¶
pages/
├─ users/
│ └─ [id].tsx <- Vista de eventos del usuario
├─ index.tsx <- Vista de usuarios
components/
├─ UserForm.tsx
├─ EventForm.tsx
🔀 Extras opcionales¶
- Filtro por nombre de evento.
- Validaciones en el frontend.
- Indicadores de carga (spinners).
- Alerta de éxito/error tras enviar formularios.
📄 Entregables¶
- Código fuente del backend y frontend (repositorio Git).
- Captura de pantalla con:
- Lista de usuarios.
- Lista de eventos de un usuario.
- Respuestas a estas preguntas:
- ¿Cómo se comunican React y Spring Boot?
- ¿Qué retos enfrentaste al hacer la integración?