Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Restaurant API

Nota personal:
Este proyecto lo desarrollé hace bastante tiempo, como un ejercicio recreativo y de aprendizaje en torno a Spring Boot y el desarrollo de APIs REST.
No es un proyecto reciente ni fue pensado para uso en producción, pero si a alguien le sirve como referencia o punto de partida, me alegra que así sea.


Descripción general

La Restaurant API es un backend basado en Spring Boot diseñado para gestionar operaciones de un restaurante mediante un servicio web RESTful.
Incluye autenticación de usuarios, control de acceso por roles, gestión de menús y productos, sistema de reservas y panel administrativo.


Funcionalidades principales

  • Registro y autenticación de usuarios mediante JWT.
  • Control de acceso basado en roles (ADMIN y CLIENTE).
  • Gestión de categorías de menú y productos.
  • Sistema de reservas de mesas.
  • Panel administrativo con operaciones CRUD.
  • Integración con frontend habilitada para CORS.

Pila tecnológica

Tecnología Versión Uso
Java 17 Plataforma de ejecución
Spring Boot 3.3.5 Framework principal
Spring Security 6.3.4 Autenticación y autorización
Spring Data JPA - Capa de persistencia
MySQL Connector - Conectividad con la base de datos
JWT (JJWT) 0.12.6 Autenticación basada en tokens
Lombok - Reducción de código boilerplate
Maven - Gestión de dependencias y compilación
dotenv-java 3.0.2 Manejo de variables de entorno
commons-lang3 3.17.0 Funciones utilitarias
android-json - Procesamiento de JSON

Arquitectura

El proyecto sigue una arquitectura por capas con separación de responsabilidades:

  • Seguridad: SecurityConfig, JwtAuthenticationFilter, SimpleCorsFilter.
  • Controladores: AuthController, AdminController, CustomerController.
  • Servicios: AuthService, AdminService, CustomerService.
  • Repositorios: UserRepository, CategoryRepository, ProductRepository, ReservationRepository.
  • Entidades: User, Category, Product, Reservation.
  • DTOs: Objetos para transferencia de datos.
  • Configuración: Clase principal RestaurantApiApplication.

Seguridad

  • Autenticación stateless con JWT.
  • Control de acceso por roles (ADMIN, CLIENTE).
  • Contraseñas cifradas con BCrypt.
  • Configuración de CORS para permitir integración con localhost:4200.

Gestión de datos

  • Mapeo de entidades JPA.
  • Repositorios basados en Spring Data JPA.
  • Soporte para almacenamiento de imágenes (longblob).
  • Operaciones CRUD completas para todas las entidades.

API

  • Diseño RESTful con recursos bien definidos.
  • Uso de DTOs para solicitudes y respuestas.
  • Manejo consistente de errores y formato de respuesta.
  • Preparada para integración con OpenAPI.

Ejecución local

Requisitos previos

  • Java 17
  • Maven
  • MySQL
  • Creacion y configuración de variables de entorno en application-secret.properties
# Clonar el repositorio
https://github.com/https-michi/restaurant-backend.git

# Compilar y ejecutar
mvn spring-boot:run

Contacto

Si quieres conversar o necesitas ayuda para adaptarlo a tus necesidades, puedes encontrarme aquí:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages