Estado General
Bugs y Vulnerabilidades
Cobertura y Mantenibilidad
Este repositorio forma parte del Trabajo de Fin de Grado (TFG) de Manuel García Baldo en la Universidad de Oviedo.
Su objetivo es proporcionar un backend robusto en Java usando Spring Boot que disponga una API REST para poder ser usada por la aplicación de Carburo.app, gestionando usuarios, vehículos y repostajes, con sus históricos y estadísticas, para la aplicación principal del proyecto (Carburo App).
La comunicación con la aplicación móvil se realiza a través de la API REST que este backend genera, asegurando disponibilidad y datos actualizados.
El proyecto incluye:
- Spring Boot con Spring Data JPA: Persistencia de entidades (usuarios, vehículos, repostajes) en Supabase/PostgreSQL.
- API REST: Endpoints para la gestión de usuarios, vehículos y repostajes.
- Servicios de negocio: Clases
@Serviceque encapsulan la lógica de negocio. - Repositorios JPA: Interfaces
JpaRepositorypara acceder a la base de datos de forma eficiente. - Manejo de excepciones y logging: Uso de
@ControllerAdviceySlf4jpara registrar errores y actividad.
Antes de ejecutar el backend, es imprescindible configurar correctamente las variables de entorno relacionadas con la base de datos.
| Variable | Descripción |
|---|---|
DB_URL |
Dirección del host de la base de datos |
DB_USER |
Usuario con permisos de lectura y escritura |
DB_PASS |
Contraseña correspondiente |
Estas variables se utilizan en application.properties para configurar Spring Boot.
⚠️ Importante:
Si estas variables no se definen correctamente, el backend no podrá establecer conexión con la base de datos y los endpoints dejarán de funcionar.
| Variable | Descripción |
|---|---|
PUBLIC_API_KEY |
API Key requerida para acceder a endpoints públicos protegidos |
SUPABASE_ISSUER |
Issuer del JWT de Supabase |
SUPABASE_JWKS_URL |
URL del JWKS para validación de tokens JWT |
-
Todos los endpoints bajo
/api/v1/public/**están protegidos por API Key -
La API Key debe enviarse en el header:
X-API-KEY: tu_api_key -
El sistema JWT se usa para endpoints privados (auth futura o interna)
-
Si la API Key es incorrecta → se devuelve:
401 UNAUTHORIZEDInvalid API Key
El backend expone endpoints REST para:
- Gestionar usuarios: alta, baja y modificación.
- Registrar y consultar vehículos asociados a usuarios.
- Registrar y consultar repostajes, con cálculos de consumo y gasto histórico.
- Consulta multiple de estaciones de servicio y precios de combustibles
La aplicación móvil interactúa únicamente con esta API para consultar o actualizar datos de la BD.
El backend registra logs detallados de cada operación:
- Altas y modificaciones de usuarios y vehículos.
- Registro de repostajes y cálculos asociados.
- Errores detectados y estado de persistencia.
Este backend es el motor de gestión interna de la aplicación Android del TFG:
- Los usuarios pueden gestionar sus vehículos y repostajes.
- Consultar estadísticas y medias de consumo.
- La app obtiene los precios y localización de estaciones directamente desde la BD de Supabase.
Manuel García Baldo
Universidad de Oviedo
Trabajo de Fin de Grado - Ingeniería Informática (2025-26)
Este proyecto se distribuye bajo licencia MIT.
Puede utilizarse, modificarse o redistribuirse libremente, siempre que se cite la fuente original.