321 palabras
2 minutos
Lab Reservations (Serverless)

Lab Reservations#

Lab Reservations es una aplicación web sin servidor para gestionar solicitudes de acceso a los laboratorios de forma sencilla y segura. Aprovecha AWS Lambda para la lógica de negocio (implementada en Go), Netlify para el hosting del frontend y DynamoDB para la persistencia de datos. Su diseño permite registrar y consultar reservas en tiempo real, respetando las reglas de capacidad y horario.

Detalles de la aplicación#

  • Frontend

    • Implementado en Astro con componentes en ReactJS y desplegado en Netlify.
    • Formulario de reserva (correo, nombre, ID de usuario, laboratorio, hora).
    • Listado de reservas activas y consulta de historial por rango de fechas.
  • Lógica de negocio (AWS Lambda + API Gateway)

    • Funciones escritas en Go y desplegadas en AWS Lambda.
    • createReservation: recibe petición POST, valida capacidad (máximo 7 personas/hora) y horario (08:00–22:00 en intervalos de hora), y crea o rechaza la reserva.
    • listActiveReservations: responde a GET con todas las reservas cuya fecha de inicio sea igual o posterior a la fecha actual.
    • listReservationsByDateRange: recibe POST con startDate y endDate para filtrar el historial de reservas.
  • Persistencia (DynamoDB)

    • Tabla Reservations con clave primaria reservationId.
    • Atributos: email, name, userId, labId, startTime.
    • Índice secundario global sobre startTime para búsquedas por fecha.

Colaboración: desarrollado junto a Steven Mateo.

Funcionalidades clave#

  • Registro de reservas con validación automática de reglas de negocio.
  • Visualización de reservas activas (fechas no expiradas).
  • Filtrado de historial de reservas por rango de fechas.
  • Cumplimiento de capacidad (7 personas por hora) y franjas horarias (08:00–22:00).

Tecnologías utilizadas#

Desarrollo de la práctica#

  1. Interfaz estática

    • Construida con Astro y ReactJS, publicada en Netlify.
    • Formularios y componentes interactivos que consumen las funciones Lambda.
  2. Funciones serverless

    • Escritas en Go y desplegadas en AWS Lambda + API Gateway, gestionan la creación, validación y consulta de reservas.
  3. Base de datos NoSQL

    • DynamoDB almacena reservas activas y archivo histórico, con índices para consultas eficientes.

Despliegue#

  • Frontend: se publica automáticamente en Netlify tras cada push a la rama main.
  • Backend: funciones Lambda y tabla DynamoDB configuradas en AWS.

Demo de la aplicación#

Repositorio de GitHub#

nightmareVCO
/
advanced-web
Waiting for api.github.com...
00K
0K
0K
Waiting...
Lab Reservations (Serverless)
https://vladimircuriel-v2.netlify.app/posts/lab-reservations/
Autor
Vladimir Curiel
Publicado el
2025-03-03