Skip to content

andreagl31/gestormusica

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 GestorMúsica API

Backend REST para gestionar música: álbumes, canciones, artistas, playlists, usuarios y perfiles, con autenticación mediante JWT y control de acceso por roles (ADMIN / USUARIO).


✅ Tecnologías usadas

  • Java + Spring Boot
  • Spring Web (REST API)
  • Spring Security + JWT
  • Spring Data JPA
  • H2 Database (modo desarrollo)
  • Lombok
  • DTOs para desacoplar entidades y respuestas
  • JUnit 5 para pruebas unitarias
  • Mockito para mocks en tests

📦 Funcionalidades

👤 Usuarios y Autenticación

  • Registro de usuarios
  • Login con JWT
  • Roles:
    • USUARIO (por defecto)
    • ADMIN (acciones protegidas)

🎶 Canciones

  • Crear canción (solo ADMIN)
  • Listar canciones
  • Obtener canción por ID
  • Eliminar canción (solo ADMIN)

💿 Álbumes

  • Crear álbum
  • Listar álbumes
  • Obtener álbum por ID
  • Eliminar álbum (solo ADMIN)
  • Listar álbumes con canciones

🎤 Artistas

  • Crear artista
  • Listar artistas
  • Obtener artista por ID

📂 Playlists

  • Crear playlist
  • Listar playlists
  • Obtener playlist por ID
  • Eliminar playlist
  • Añadir canciones a una playlist

🧾 Perfiles

  • Crear perfil
  • Listar perfiles
  • Obtener perfil por ID

🔐 Seguridad (JWT)

La aplicación usa JWT (JSON Web Token) para autenticar y autorizar las peticiones.

Después de hacer login, el token devuelto debe enviarse en cada petición protegida:

Authorization: Bearer TU_TOKEN

Se usan anotaciones como @PreAuthorize para controlar el acceso por rol.


🧪 Base de datos

En desarrollo se utiliza H2.

Tablas principales

  • usuarios
  • albumes
  • canciones
  • artistas
  • playlists
  • perfiles

Tablas intermedias

  • playlist_cancion
  • usuario_playlist
  • usuario_cancion
  • artista_cancion

🧪 Pruebas

El proyecto incluye pruebas unitarias usando:

  • JUnit 5 para testear la lógica de negocio
  • Mockito para simular dependencias (servicios, repositorios, etc.)

Las pruebas se encuentran en:

src/test/java

Se pueden ejecutar desde IntelliJ o con Maven/Gradle.


🚀 Cómo ejecutar el proyecto

  1. Abrir el proyecto en IntelliJ IDEA
  2. Ejecutar la clase principal anotada con @SpringBootApplication
  3. La API quedará disponible en:
http://localhost:8080

(el puerto puede variar según application.properties)


🧪 Probar la API (Bruno / Postman)

1️⃣ Login

POST /api/usuarios/login

{
  "username": "maria",
  "password": "1234"
}

Respuesta:

TOKEN_JWT

2️⃣ Usar el token

En todas las peticiones protegidas:

Authorization: Bearer TOKEN_JWT

📌 Endpoints principales

Auth

  • POST /api/usuarios/register
  • POST /api/usuarios/login

Canciones

  • GET /api/canciones
  • POST /api/canciones (ADMIN)
  • GET /api/canciones/{id}
  • DELETE /api/canciones/{id} (ADMIN)

Álbumes

  • GET /api/albumes
  • POST /api/albumes
  • GET /api/albumes/{id}
  • GET /api/albumes/con-canciones
  • DELETE /api/albumes/{id} (ADMIN)

Artistas

  • GET /api/artistas
  • POST /api/artistas
  • GET /api/artistas/{id}

Playlists

  • GET /api/playlists
  • POST /api/playlists
  • GET /api/playlists/{id}
  • DELETE /api/playlists/{id}
  • POST /api/playlists/{playlistId}/canciones/{cancionId}

Perfiles

  • GET /api/perfiles
  • POST /api/perfiles
  • GET /api/perfiles/{id}

👑 Roles

  • Los usuarios registrados tienen rol USUARIO
  • El rol ADMIN es necesario para eliminar o crear ciertos recursos

✍️ Autor

Proyecto backend realizado como práctica con Spring Boot + JWT + API REST.

About

gestorseries

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages