Uma aplicação fullstack moderna que integra a API do Spotify para contratar artistas. O projeto consiste em uma API REST robusta desenvolvida com Laravel e um frontend interativo construído com Next.js.
- Visão Geral
- Funcionalidades
- Tecnologias Utilizadas
- Pré-requisitos
- Instalação e Configuração
- Como Executar o Projeto
- Estrutura do Projeto
⚠️ Avisos Importantes- API Endpoints
Este projeto permite que usuários autenticados com suas contas do Spotify possam contratar artistas de forma fácil e intuitiva. A aplicação consome a API do Spotify para buscar informações de artistas e integra um sistema de contratação com banco de dados próprio.
- ✅ Autenticação integrada com Spotify
- ✅ Busca de artistas em tempo real
- ✅ Carrossel de artistas populares
- ✅ Interface responsiva com Material-UI
- ✅ Notificações em tempo real (Toastify)
- ✅ Modal para contratação de artistas
- ✅ Design moderno com Tailwind CSS
- ✅ API REST para gerenciar contratações
- ✅ Integração com Spotify API
- ✅ Modelagem de dados relacional
- ✅ CRUD completo para hirings
- ✅ Validação robusta de dados
- ✅ Health check endpoint
- PHP 8.2+ - Linguagem de programação
- Laravel 12 - Framework web
- Composer - Gerenciador de dependências PHP
- SQLite/MySQL - Banco de dados
- Node.js - Runtime JavaScript
- Next.js 16 - Framework React fullstack
- React 19 - Biblioteca UI
- TypeScript - Tipagem estática
- Tailwind CSS 4 - Framework CSS
- Material-UI 7 - Componentes UI
- Axios - Cliente HTTP
- React Toastify - Notificações
Antes de começar, certifique-se de ter instalado:
- PHP 8.2 ou superior (Download)
- Composer (Download)
- Node.js 18+ (Download)
- npm ou yarn (vem com Node.js)
- Git (Download)
# Verificar PHP
php -v
# Verificar Composer
composer -V
# Verificar Node.js e npm
node -v
npm -vgit clone https://github.com/KaykyOne/projeto-api-spotify.git
cd projeto-api-spotify# Navegar para a pasta da API
cd api
# Instalar dependências PHP
composer install
# Copiar arquivo de ambiente
copy .env.example .env
# Gerar chave da aplicação
php artisan key:generate
# Configurar banco de dados (editar .env se necessário)
# Executar migrações
php artisan migrate
Editar .env conforme sua configuração local:
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=sqlite
# ou
DB_HOST=127.0.0.1
DB_DATABASE=contatar_artistas
DB_USERNAME=root
DB_PASSWORD=# Voltar à raiz do projeto
cd ..
# Navegar para a pasta do frontend
cd front
# Instalar dependências Node.js
npm install
# Criar arquivo de ambiente
copy .env.example .env.local
# ou
echo "" > .env.localConfigurar .env.local do frontend:
NEXT_PUBLIC_API_URL=http://localhost:8000/api
NEXT_PUBLIC_SPOTIFY_CLIENT_ID=sua_chave_aqui
NEXT_PUBLIC_SPOTIFY_REDIRECT_URI=http://localhost:3000/callbackTerminal 1 - Backend (Laravel):
cd api
php artisan serve
# A API rodará em http://localhost:8000Terminal 2 - Frontend (Next.js):
cd front
npm run dev
# O frontend rodará em http://localhost:3000Na raiz do projeto (se configurado com concurrently):
npm run dev
# Executa tanto backend quanto frontend simultaneamenteAbra seu navegador e acesse: http://localhost:3000
projeto-api-spotify/
│
├── 📂 api/ # Backend Laravel
│ ├── app/
│ │ ├── Http/Controllers/ # Controladores (HiringController, SpotifyController)
│ │ └── Models/ # Modelos (User, Hiring)
│ ├── database/
│ │ ├── migrations/ # Migrações do banco de dados
│ │ ├── factories/ # Factories para testes
│ │ └── seeders/ # Seeders para população de dados
│ ├── routes/
│ │ └── api.php # Rotas da API REST
│ ├── config/ # Configurações da aplicação
│ ├── .env # Variáveis de ambiente
│ ├── composer.json # Dependências PHP
│ └── artisan # CLI Laravel
│
├── 📂 front/ # Frontend Next.js
│ ├── src/
│ │ ├── app/ # Páginas e layout
│ │ ├── components/ # Componentes React
│ │ │ ├── navbar.tsx
│ │ │ ├── carrosel.tsx
│ │ │ ├── modalHiring.tsx
│ │ │ └── ...
│ │ ├── hooks/ # Custom hooks
│ │ └── models/ # Types/Interfaces TypeScript
│ ├── public/ # Assets estáticos
│ ├── .env.local # Variáveis de ambiente
│ ├── package.json # Dependências Node.js
│ ├── next.config.ts # Configuração Next.js
│ └── tsconfig.json # Configuração TypeScript
│
└── README.md # Este arquivo
http://localhost:8000/api
GET /pingResponse: { "pong": true }
GET /hiringPOST /hiring
Content-Type: application/json
{
"artist_name": "string",
"artist_id": "string",
"user_id": "string",
"event_date": "2025-01-15"
}DELETE /hiring/{id}Este repositório contém um arquivo .env com credenciais e chaves de API inclusos exclusivamente para fins acadêmicos e de demonstração.
- ❌ NÃO use estas credenciais em produção
- ❌ NÃO compartilhe este repositório com terceiros sem avisar sobre as credenciais
- ✅ Substitua todas as chaves antes de fazer deploy
As credenciais do Spotify (Client ID, Secret, Tokens) inclusos neste projeto expiram automaticamente e precisarão ser renovadas periodicamente.
- Access Tokens: Expiram em 1 hora (padrão Spotify)
- Refresh Tokens: Expiram em até 60 dias
- API Credentials: Permanecem válidas até revogação manual
-
Acesse Spotify Developer Dashboard
-
Faça login com sua conta Spotify
-
Selecione sua aplicação
-
Gere novas credenciais se necessário
-
Atualize as variáveis de ambiente:
SPOTIFY_CLIENT_ID=novo_id SPOTIFY_CLIENT_SECRET=novo_secret
-
Reinicie os servidores
cd api
php artisan make:controller NomeControllerphp artisan make:migration create_tabela_tablephp artisan config:clear
php artisan cache:clearcd front
# Crie manualmente em src/components/# Resetar banco de dados
cd api
php artisan migrate:reset
php artisan migrate
- Certifique-se que o servidor Laravel está rodando em
http://localhost:8000 - Verifique se as rotas estão corretas em
api/routes/api.php
- Crie o arquivo
.env.localno diretóriofront/ - Adicione as variáveis de ambiente necessárias
# Use outra porta
php artisan serve --port=8001
# Atualize a variável de ambiente do frontendEste projeto é fornecido como é, para fins educacionais.
Para contribuir com melhorias:
- Faça um fork do repositório
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Se encontrar problemas:
- Verifique se todos os pré-requisitos estão instalados
- Consulte a seção Troubleshooting
- Abra uma issue no repositório
Desenvolvido com ❤️ para fins acadêmicos
Última atualização: Dezembro de 2025