Este é um projeto web full-stack que permite ao usuário sortear um álbum de música baseado em um gênero musical de sua escolha.
O projeto foi construído utilizando uma arquitetura desacoplada (Monorepo), com uma API RESTful no back-end e uma aplicação SPA (Single Page Application) no front-end.
(Pasta: /album-generator)
- Java 17
- Spring Boot 3
- Spring Web: Para a criação dos endpoints RESTful.
- Spring Data JPA: Para a persistência e acesso aos dados.
- H2 Database: Banco de dados em memória utilizado para desenvolvimento.
(Pasta: /album-generator-ui)
- React 18
- Vite: Como ferramenta de build e servidor de desenvolvimento.
- JavaScript (ES6+)
- CSS Básico
-
API:
GET /api/genres: Lista todos os gêneros musicais cadastrados.POST /api/genres: Cadastra um novo gênero.POST /api/albums: Cadastra um novo álbum, associando-o a um gênero.GET /api/albums/random?genreId={id}: (Endpoint principal) Sorteia e retorna um álbum aleatório com base no ID do gênero fornecido.
-
Front-end:
- Exibe botões para cada gênero cadastrado.
- Ao clicar em um gênero, consome o endpoint de sorteio da API.
- Exibe o título, artista e imagem de capa do álbum sorteado.
- JDK 17 (ou superior)
- Node.js (v18 ou superior)
- Navegue até a pasta do back-end:
cd album-generator - Inicie a aplicação Spring Boot (utilizando o VS Code, IntelliJ ou terminal).
- O servidor estará rodando em
http://localhost:8080. - (Obrigatório) Use o arquivo
teste.http(ou outra ferramenta de API) para cadastrar gêneros e álbuns no banco H2, pois ele é reiniciado a cada execução.
- Em um novo terminal, navegue até a pasta do front-end:
cd album-generator-ui - Instale as dependências:
npm install - Inicie o servidor de desenvolvimento:
npm run dev - A aplicação estará disponível em
http://localhost:5173.