Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7f9a044
Instalação do Laravel 8.x / Angular 8.x e configuração do projeto.
rodolphodepaula Apr 4, 2024
2975fab
Criação do modelo e migração para o banco de dados.
rodolphodepaula Apr 4, 2024
1b1f131
Instalação e configuração laravel/breeze e passport
rodolphodepaula Apr 4, 2024
1c93f05
Integração com API do Spotify implementada
rodolphodepaula Apr 5, 2024
33b2007
Implementação do CRUD e teste unitário para usuários
rodolphodepaula Apr 6, 2024
7846ecf
Implementação do CRUD e teste unitário para company
rodolphodepaula Apr 6, 2024
aac5825
Estruturação dos Componentes Angular e preparando a Home
rodolphodepaula Apr 6, 2024
e8176d0
Implementação do login/logout de autenticação e com notificação no fr…
rodolphodepaula Apr 6, 2024
1e489d2
Implementando componentes filhos do admin, estilos e rotas de navegação
rodolphodepaula Apr 7, 2024
8b238e2
Implementação do CRUD e teste unitário para artistas e albums
rodolphodepaula Apr 7, 2024
3ca2137
Implementação do layout e crud (Front-end) de usuários
rodolphodepaula Apr 7, 2024
8d9d530
Implementação do layout e crud (Front-end) de empresa, album, artista…
rodolphodepaula Apr 7, 2024
50acb74
Implementação do CRUD e teste unitário para Faixas
rodolphodepaula Apr 8, 2024
3aae1c7
Escrever teste de integração para a Api Spotify
rodolphodepaula Apr 8, 2024
4ff3b4c
Refatoração estrutural: Separados diretórios de backend e frontend pa…
rodolphodepaula Apr 8, 2024
4e98ed7
Refatoração estrutural: Separados diretórios de backend e frontend pa…
rodolphodepaula Apr 8, 2024
0cc85e9
Refatoração do AlbumFactory para geração de URLs dinâmicas de imagens…
rodolphodepaula Apr 8, 2024
62dc112
Implementação do layout e crud (Front-end) de tracks e adicionado pag…
rodolphodepaula Apr 8, 2024
fddc736
Ajustes no layout da página inicial e implementação da funcionalidade…
rodolphodepaula Apr 8, 2024
1934775
Implementada integração da faixa do Spotify na biblioteca da aplicação.
rodolphodepaula Apr 9, 2024
d7581bc
Adicionadas instruções detalhadas no README para facilitar a configur…
rodolphodepaula Apr 9, 2024
b89b009
Incluído campo preview_url no form request e atualizada lógica no ser…
rodolphodepaula Apr 9, 2024
c31156b
FIXME: preview_url (message) no form request.
rodolphodepaula Apr 9, 2024
fe6190f
fix(docs): Removendo route auth da web atualizando instruções do README
rodolphodepaula Apr 11, 2024
7a3d934
fix(docs): Removendo route auth da web atualizando instruções do README
rodolphospaula Apr 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
50 changes: 50 additions & 0 deletions MODEL_RELATIONSHIPS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Relacionamentos dos Modelos

Este documento descreve os relacionamentos entre os modelos na aplicação.

## Users

- `User`
- Pertence a uma `Company`.
- Possui um ou zero `Person`.
- `belongsTo(Company::class)`

## Person

- `Person`
- Pertence a um `User`.
- Pertence a uma `Company`.
- `belongsTo(User::class)`
- `belongsTo(Company::class)`

## Companies

- `Company`
- Tem muitos `User`.
- Tem muitos `Person`.
- Tem muitos `Album`.
- `hasMany(User::class)`
- `hasMany(Person::class)`
- `hasMany(Album::class)`

## Albums

- `Album`
- Pertence a uma `Company`.
- Tem muitos `Track`.
- `belongsTo(Company::class)`
- `hasMany(Track::class)`

## Tracks

- `Track`
- Pertence a um `Album`.
- Tem e pertence a muitos `Artist` (Relacionamento Muitos Para Muitos).
- `belongsTo(Album::class)`
- `belongsToMany(Artist::class, 'artist_track')`

## Artists

- `Artist`
- Tem e pertence a muitos `Track` (Relacionamento Muitos Para Muitos).
- `belongsToMany(Track::class, 'artist_track')`
76 changes: 76 additions & 0 deletions README-ONERPM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
## Início

Bem vindo ao mundo da música!

Atualmente temos a necessidade de consumir os dados de faixas musicais através do código ISRC, que é uma das coisas mais importantes na indústria fonográfica.

Segundo [Abramus](https://www.abramus.org.br/musica/isrc/), ISRC (International Standard Recording Code ou Código de Gravação Padrão Internacional) é um padrão internacional de código para identificar de forma única as gravações (faixas).

Ele funciona como um código de barras da faixa.


## Problema

Durante o fechamento de contrato com um produtor, foram informados 10 ISRC's que não constam em nossas bases de dados, que seguem abaixo:

* US7VG1846811
* US7QQ1846811
* BRC310600002
* BR1SP1200071
* BR1SP1200070
* BR1SP1500002
* BXKZM1900338
* BXKZM1900345
* QZNJX2081700
* QZNJX2078148

Precisamos obter e exibir os seguintes dados:

* Thumb do álbum
* Data de lançamento
* Título da faixa
* Lista dos artistas da faixa
* Duração da faixa em minutos e segundos (mm:ss)
* Player com prévia do áudio
* Link para a página da faixa no Spotify
* Sinalização dizendo se a faixa está ou não disponível no Brasil (BR)

Por decisão técnica, temos a necessidade de guardar estas informações em um banco de dados. Para isso, fique livre para criar a estrutura necessária para guardar as informações que achar pertinente das faixas.

- [Relacionamentos dos Modelos](MODEL_RELATIONSHIPS.md)

Uma vez armazenados os dados, precisamos exibí-los através de uma webpage pública, ordenados por título da faixa de forma alfabética.


## Requisitos

* Faça um fork deste repositório e abra um PR quando estiver finalizado.
* O backend deve ser feito no framework Laravel 7.0 ou superior.
* O banco de dados deve ser MySQL.
* A página deve ser responsiva para atender todos os tipos de dispositivos.
* Use a API do Spotify: [https://developer.spotify.com/](https://developer.spotify.com/) para coletar os dados das faixas.


## Diferencial

* Desenvolver o frontend no Angular 8 ou superior.
* Desenvolver testes unitários e de integração.
![Resultado dos Testes Unitários](test-unitresults.jpg "Resultado dos Testes Unitários")


## O que será avaliado

* Fidelidade às instruções.
* Padrões de projeto.
* Clean Code e boas práticas.
* Boas práticas de versionamento.


## Perfil que buscamos

* Comunicativo
* Autodidata
* Automotivado
* Curioso
* Gostar de trabalhar em equipe
* Compromissado
106 changes: 57 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,73 +1,81 @@
## Início
# Descubra Músicas pelo ISRC com Laravel e Angular

Bem vindo ao mundo da música!
Bem-vindo ao projeto Laravel! Este projeto utiliza Laravel 8 com Angular 8 para criar uma aplicação web poderosa.

Atualmente temos a necessidade de consumir os dados de faixas musicais através do código ISRC, que é uma das coisas mais importantes na indústria fonográfica.
![Aplicação](screem-app-search.jpg)

Segundo [Abramus](https://www.abramus.org.br/musica/isrc/), ISRC (International Standard Recording Code ou Código de Gravação Padrão Internacional) é um padrão internacional de código para identificar de forma única as gravações (faixas).
## Requisitos

Ele funciona como um código de barras da faixa.
- PHP >= 8.2.12
- Docker e Docker Compose
- Node.js >= v16.20.2
- NPM >= 8.19.4
- Composer

## Configuração Inicial

## Problema
### Clonando o Repositório

Durante o fechamento de contrato com um produtor, foram informados 10 ISRC's que não constam em nossas bases de dados, que seguem abaixo:
Clone o repositório para sua máquina local:

* US7VG1846811
* US7QQ1846811
* BRC310600002
* BR1SP1200071
* BR1SP1200070
* BR1SP1500002
* BXKZM1900338
* BXKZM1900345
* QZNJX2081700
* QZNJX2078148

Precisamos obter e exibir os seguintes dados:
## Docker Sail
Este projeto utiliza o Docker Sail para simplificar o ambiente de desenvolvimento. Você pode iniciar o ambiente Docker Sail com o seguinte comando:
./vendor/bin/sail up

* Thumb do álbum
* Data de lançamento
* Título da faixa
* Lista dos artistas da faixa
* Duração da faixa em minutos e segundos (mm:ss)
* Player com prévia do áudio
* Link para a página da faixa no Spotify
* Sinalização dizendo se a faixa está ou não disponível no Brasil (BR)
## Instalação de Dependências
Depois de iniciar o ambiente Sail, você precisa instalar as dependências do PHP e do Node.js. Use os seguintes comandos:

Por decisão técnica, temos a necessidade de guardar estas informações em um banco de dados. Para isso, fique livre para criar a estrutura necessária para guardar as informações que achar pertinente das faixas.
- composer install - (Diretório tracks-backend)
- npm install - (Diretório tracks-frontend)

Uma vez armazenados os dados, precisamos exibí-los através de uma webpage pública, ordenados por título da faixa de forma alfabética.
## Configuração do Banco de Dados
Crie um arquivo .env com base no arquivo .env.example e configure suas credenciais de banco de dados.
- cp .env.example .env

Em seguida, gere uma chave de aplicativo: (Diretório tracks-backend)
- ./vendor/bin/sail php artisan key:generate

## Requisitos
E execute as migrações do banco de dados: (Diretório tracks-backend):
- ./vendor/bin/sail php artisan migrate --seed

Utilize o comando ./vendor/bin/sail php artisan optimize:clear se necessário para limpar a cache da aplicação

## Rodando o Projeto (Diretório tracks-frontend):
Após a configuração inicial, você pode iniciar o servidor de desenvolvimento com o seguinte comando:
- ng serve

## Autenticação com o Spotify

Para autenticar com o Spotify e utilizar as APIs deles, você precisará registrar o seu aplicativo e obter as credenciais necessárias. Siga os passos abaixo para configurar:

1. Acesse [Spotify Developer Dashboard](https://developer.spotify.com/) e faça login com sua conta Spotify.

2. Clique em `Create an App` para registrar seu novo aplicativo.

3. Preencha as informações solicitadas sobre o seu aplicativo e aceite os termos de uso.

4. Após a criação do aplicativo, você será levado ao Dashboard do seu aplicativo onde você encontrará o `Client ID` e poderá definir um `Client Secret`.

5. Adicione as credenciais ao seu arquivo `.env` da seguinte forma:

SPOTIFY_CLIENT_ID=sua_client_id_aqui
SPOTIFY_CLIENT_SECRET=seu_client_secret_aqui

* Faça um fork deste repositório e abra um PR quando estiver finalizado.
* O backend deve ser feito no framework Laravel 7.0 ou superior.
* O banco de dados deve ser MySQL.
* A página deve ser responsiva para atender todos os tipos de dispositivos.
* Use a API do Spotify: [https://developer.spotify.com/](https://developer.spotify.com/) para coletar os dados das faixas.

6. Assegure-se de nunca expor suas credenciais publicamente e de incluir o `.env` no seu `.gitignore`.

## Diferencial
Lembre-se de substituir `sua_client_id_aqui` e `seu_client_secret_aqui` pelas credenciais reais do seu aplicativo Spotify.

* Desenvolver o frontend no Angular 8 ou superior.
* Desenvolver testes unitários e de integração.
Para mais informações sobre a autenticação e uso da API do Spotify, consulte a [documentação oficial da API](https://developer.spotify.com/documentation/web-api/).


## O que será avaliado
Acesse o aplicativo em seu navegador em http://localhost:4200/ (Porta padrão do angular. )

* Fidelidade às instruções.
* Padrões de projeto.
* Clean Code e boas práticas.
* Boas práticas de versionamento.
### Credenciais de Acesso

Um usuário de teste foi criado durante a execução do seeder [tracks-backend\database\seeders\UserCompanySeeder.php].

## Perfil que buscamos
Se tudo der certo, você terá a visualização da tela do Painel do sistema.

* Comunicativo
* Autodidata
* Automotivado
* Curioso
* Gostar de trabalhar em equipe
* Compromissado
![Painel](painel-admin.png)
Binary file added painel-admin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screem-app-search.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added test-unitresults.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions tracks-backend/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = false
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[docker-compose.yml]
indent_size = 4
1 change: 1 addition & 0 deletions tracks-backend/.env.development
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_APP_API_URL=http://localhost
58 changes: 58 additions & 0 deletions tracks-backend/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

SPOTIFY_API_URL_TOKEN=
SPOTIFY_API_URL=
SPOTIFY_CLIENT_ID=
SPOTIFY_CLIENT_SECRET=
SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1
1 change: 1 addition & 0 deletions tracks-backend/.env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VITE_APP_API_URL=http://localhost
Loading