Um clone de aplicação de streaming de música (como o Spotify) focado em curadoria e descoberta musical personalizada, utilizando a API Gemini do Google para gerar recomendações baseadas no histórico de audição do usuário.
O projeto utiliza a API gratuita Jamendo para busca e streaming de músicas, e o Google Gemini como motor de recomendação inteligente.
-
Autenticação de Usuário — Registro e login com JWT (JSON Web Tokens).
-
Recomendações com IA — Sugestões personalizadas com justificativas geradas pelo Google Gemini.
-
Player de Música Completo — Player persistente com controles de reprodução, seek, volume e música atual.
-
Gestão de Playlists (CRUD)
- Criar novas playlists (com música inicial)
- Editar, excluir e visualizar playlists
- Adicionar ou remover músicas
-
Busca em Tempo Real — Busca integrada à API do Jamendo.
-
Histórico de Audição — Cada reprodução é automaticamente registrada.
-
Interface Moderna e Responsiva — Desenvolvida com Next.js 15 e Tailwind CSS.
O projeto é um monorepo dividido em duas partes principais:
- Responsável: @Ma2903 (Manoela)
- Framework: Next.js 15 (com Turbopack)
- Linguagem: TypeScript
- UI: React 19
- Estilização: Tailwind CSS
- Gestão de Estado: React Context API (para Autenticação, Player e Playlists)
- Ícones: Lucide React
-
Responsável: @DevZIKIII (Daniel)
-
Runtime: Node.js
-
Framework: Express.js
-
Linguagem: TypeScript
-
ORM: Prisma
-
APIs Externas:
- Google Gemini — Recomendação inteligente
- Jamendo API — Dados e streaming de músicas
- Banco de Dados: PostgreSQL
- Containerização: Docker Compose
- O usuário ouve músicas fornecidas pela API Jamendo.
- Cada faixa é registrada no histórico (
POST /api/history). - O frontend solicita recomendações (
GET /api/recommendations). - O backend recupera o histórico recente (ex: últimas 15 músicas).
- O histórico é convertido em um prompt e enviado à API do Google Gemini.
- O Gemini retorna sugestões com justificativas.
- O backend busca as faixas correspondentes na API do Jamendo.
- O frontend exibe as recomendações em
MusicCards.
- Node.js (v24 ou superior)
- Docker e Docker Compose
git clone https://github.com/Ma2903/music-ai-curatorship.git
cd music-ai-curatorshipSuba o container do PostgreSQL com Docker Compose:
docker compose up -dIsso criará o container com o banco configurado e pronto para uso.
Crie um arquivo .env em /backend e outro em /frontend com os seguintes valores:
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/music_ai_curatorship"
JWT_SECRET="sua_chave_secreta_aqui"
# APIs Externas
GEMINI_API_KEY="sua_chave_da_api_gemini"
JAMENDO_CLIENT_ID="seu_client_id_jamendo"NEXT_PUBLIC_API_URL="http://localhost:4000"# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm installcd backend
npx prisma migrate dev
npm run devServidor iniciado em: http://localhost:4000
cd frontend
npm run devApp disponível em: http://localhost:3000
music-ai-curatorship/
├── backend/
│ ├── prisma/
│ ├── src/
│ ├── package.json
│ └── .env
├── frontend/
│ ├── src/
│ ├── public/
│ ├── package.json
│ └── .env
└── docker-compose.yml
| Nome | GitHub | Responsabilidade |
|---|---|---|
| Manoela | @Ma2903 | Frontend, UI/UX, integração com APIs e arquitetura do app |
| Daniel | @DevZIKIII | Backend, banco de dados, autenticação e lógica de recomendação com IA |
Este projeto está licenciado sob a MIT License — veja o arquivo LICENSE para mais detalhes.