Skip to content

matisalinas7/reservation-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Reservation App

Sistema de reservas full stack desarrollado con Spring Boot 4 y Angular 21. Permite crear, listar y cancelar reservas con validación de disponibilidad en tiempo real.

Tecnologías

Backend

  • Java + Spring Boot 4
  • Spring Data JPA + Hibernate
  • MySQL
  • Swagger / OpenAPI

Frontend

  • Angular 21
  • TypeScript
  • Reactive Forms

Funcionalidades

  • Listado de reservas con estado (activa, cancelada, completada)
  • Creación de reserva con validación de solapamiento de horarios
  • Cancelación de reserva con feedback visual
  • Manejo global de excepciones con respuestas de error estructuradas
  • Notificaciones toast para éxitos y errores
  • Página 404

Arquitectura del backend

Sigue una arquitectura en capas:

  • Controller — recibe y responde peticiones HTTP
  • Service — lógica de negocio (interface + implementación)
  • Repository — acceso a datos con Spring Data JPA
  • DTOs — separación entre entidades internas y respuestas de la API

Levantar el proyecto localmente

Requisitos

  • Java 21+
  • Node.js 20+
  • MySQL 8+

Backend

cd reservation-backend
# Configurar credenciales de MySQL en application.properties
./mvnw spring-boot:run

Swagger disponible en http://localhost:8081/swagger-ui/index.html

Frontend

cd reservation-frontend
npm install
ng serve

App disponible en http://localhost:4200

Próximas mejoras

  • Autenticación con Spring Security + JWT
  • Filtros y paginación en el listado
  • Tests unitarios e integración
  • Servicios dinámicos desde la API

Diagrama de clases

classDiagram
    class Base {
        +Long id
    }

    class Usuario {
        +String nombre
        +String apellido
        +String email
        +String contrasenia
    }

    class Reserva {
        +ReservationStatus estado
    }

    class Turno {
        +LocalDate fecha
        +LocalTime horaInicio
        +LocalTime horaFin
    }

    class Servicio {
        +String nombre
        +String descripcion
        +Integer duracion
    }

    class Horario {
        +DayOfWeek diaSemana
        +LocalTime horaInicio
        +LocalTime horaFin
    }

    class Categoria {
        +String nombre
        +String descripcion
    }

    Base <|-- Usuario
    Base <|-- Reserva
    Base <|-- Turno
    Base <|-- Servicio
    Base <|-- Horario
    Base <|-- Categoria

    Usuario "1" --> "0..*" Reserva
    Reserva "1" --> "1" Turno
    Reserva "0..*" --> "1" Servicio
    Turno "0..*" --> "1" Horario
    Servicio "1" --> "0..*" Horario
    Categoria "1" --> "0..*" Servicio
Loading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors