Esta es una aplicación de muica con la arquitectura de microservicios con spring boot 3. En la que hay usuarios oyentes que disfrutan de la musica publicada en la aplicacion y tambien hay artistas que publican o crean la musica que se encuentra disponible en la app.
Basado en la arquitectura de microservicios sin ningun tipo de front-end o interfaz grafica, utiliza una seguridad basada en spring security con jwt para proteger los endpoints de los usuarios no autorizados.
Para que esta applicacion pueda funcionar completamente depende de dos microservicios, artistas y oyentes los cuales tienen toda la logica de negocio de la aplicacion. Este proyecto esta hecho con el fin de unir completamente ambos microservicios a traves de OpenFeign y crear una app segura con inicio de sesión y registro de cuenta.
- ✅ Registrar usuarios
- ✅ Auth JWT
- ✅ Buscar todos los Artistas y por id
- ✅ Buscar canciones por Artista
- ✅ Listar todas las canciones y cancion por id
- ✅ Crud completo de canciones
- ✅ listar, agregar y eliminar favoritas
- ✅ Validacion de campos
- Spring Cloud OpenFeign
- Jakarta Bean Validation
- Spring Data JPA
- Spring Security
- Spring web
- MySQL 8
- Lombok
- JJWT
spring.datasource.url=jdbc:mysql://localhost:3306/appmusic?useSSL=false&serverTimezone=America/Bogota&AllowpublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.generate-ddl=false
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.show-sql=false
spring.jpa.open-in-view=true
spring.datasource.hikari.pool-name=conexionOyentes
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.connection-timeout=45000
@FeignClient(name = "servicio-artistas",url = "localhost:8004")
public interface ArtistsFeignClient {
}
@FeignClient(name = "servicio-clientes",url = "localhost:8003")
public interface OyentsFeignClient {
}
- Java 17 o una version superior.
- MySQL 8
- Lombock
- Primero Descargamos la version mas actual del proyecto en el siguiente enlace
- Descargamos el archivo appmusic.sql
- Descargamos la versión mas reciente de la API ARTISTAS
- Descargamos la versión mas reciente de la API OYENTES
- importamos nuestros proyectos en el IDE.
- luego importamos la base de datos en nuestro gestor SGBD MySQL.
por ultimo corremos nuestros proyectos y se veria asi:
Para Realizar una peticion se debe enviar el JWT en las cabeceras de la peticion.
POST musicapp/auth/singin
{
"username":"[email protected]",
"password":"******"
}
Si el inicio de session es exitoso deberi devolver en la respuesta el JSON Web Token.
POST /musicapp/auth/singup
{
"nombre":"oyente3",
"email":"[email protected]",
"password":"oyente3.12345",
"idRol":1
}
{
"nombre":"Artis3",
"email":"[email protected]",
"noombreArtistico":"Artistmusic"
"password":"Artis3.12345",
"idRol":2
}