Aplicación web desarrollada con Spring Boot, MySQL y JWT, diseñada para llevar un control de gastos personales con categorías, usuarios autenticados y futuras funcionalidades estadísticas.
- Java 17
- Spring Boot
- Spring Security + JWT
- JPA/Hibernate
- MySQL
- Lombok
- Postman (para pruebas)
com.juanjojmnz.gestorgastos
├── controller       // Controladores REST (expuestos al cliente)
├── service          // Interfaces de servicios (lógica de negocio)
│   └── impl         // Implementaciones concretas de los servicios
├── repository       // Interfaces que extienden JpaRepository
├── entity           // Entidades JPA (@Entity)
├── dto              // Objetos de transferencia de datos (Data Transfer Objects)
├── security         // Seguridad: JWT, filtros, configuración de Spring Security
├── mapper           // Conversores entre entidades y DTOs
└── config           // Configuraciones generales (CORS, beans, etc.)
- Registro de usuario: POST /auth/register
- Login: POST /auth/login→ Devuelve token JWT
- Protección de rutas con filtro JwtFilter
- Crear, listar, actualizar y eliminar gastos
- Cada gasto tiene:
- Descripción
- Monto
- Fecha
- Categoría (relación ManyToOne)
 
- CRUD de categorías:
- GET /categorias
- POST /categorias
- PUT /categorias/{id}
- DELETE /categorias/{id}
 
- Filtrar gastos por categoría: GET /gastos/categoria/{idCategoria}
- Resumen mensual
- Gastos por categoría
- Datos listos para gráficos (pie/bar)
Crea una base de datos llamada gestorgastos y actualiza tu archivo application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/gestorgastos
spring.datasource.username=tu_usuario
spring.datasource.password=tu_contraseña
spring.jpa.hibernate.ddl-auto=updateConfigura los campos necesarios en el archivo application-local.properties
# Database
spring.datasource.url=jdbc:mysql://localhost:3306/nombre_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=tu_usuario
spring.datasource.password=tu_contraseña
# JWT
jwt.secret=tu_jwt_secret_key
jwt.expiration=86400000./mvnw spring-boot:run- Realiza login (/auth/login)
- Copia el token JWT
- Añade el token a cada petición protegida:
- Header: Authorization: Bearer TU_TOKEN
 
- Header: 
- Enviar avisos por correo (Spring Mail)
- Exportar gastos a PDF o Excel
- Filtrado avanzado y búsqueda
- Interfaz gráfica
- API REST para consumo desde móvil
Proyecto desarrollado por Juan José Jiménez Gil, 2025
Este proyecto está licenciado bajo los términos de la licencia MIT. Consulta el archivo LICENSE para más detalles.
¡Si te ha gustado mi proyecto, dame una estrella o sígueme por GitHub!