API REST desenvolvida em C# .NET para simular uma rádio online com fila de reprodução, processamento em background e streaming de áudio, incluindo uma interface web simples para reprodução.
- Adicionar músicas à fila de reprodução
- Processamento automático das músicas (BackgroundService)
- Controle de estado da rádio (Playing, Paused, Stopped)
- Streaming de áudio via HTTP
- Listagem de músicas disponíveis
- Interface web para reprodução (player)
O projeto segue uma arquitetura em camadas baseada em separação de responsabilidades:
- Domain → Entidades e regras básicas
- Application → Serviços e lógica de negócio
- Infrastructure → Implementações técnicas (fila em memória)
- API → Entrada HTTP, controllers e arquivos estáticos
- .NET 8
- ASP.NET Core Web API
- BackgroundService
- ConcurrentQueue
- Swagger
- HTML + JavaScript (player web)
dotnet runA API estará disponível em:
https://localhost:7011/swagger
Acesse o player diretamente no navegador:
https://localhost:7011/index.html
Funcionalidades:
- Selecionar músicas
- Reproduzir áudio diretamente no browser
- Integração com endpoints da API
Adiciona uma música à fila da rádio.
Retorna o estado atual da rádio.
Retorna a lista de músicas disponíveis.
Realiza o streaming do arquivo de áudio.
Exemplo:
GET /stream/song1.mp3
[
{
"title": "Lo-fi Beat",
"artist": "Free Audio",
"filePath": "song1.mp3",
"duration": 10
},
{
"title": "Chill Vibes",
"artist": "Free Audio",
"filePath": "song2.mp3",
"duration": 8
}
]RadioStream.Api/
├── Controllers/
├── Workers/
├── Program.cs
└── wwwroot/
├── index.html
└── songs/
├── song1.mp3
├── song2.mp3
Os arquivos de áudio utilizados são royalty-free e incluídos apenas para fins de demonstração.
- Processamento assíncrono com BackgroundService
- Fila em memória com ConcurrentQueue
- Streaming HTTP com suporte a range
- Interface web integrada à API
- Arquitetura limpa e escalável
Projeto desenvolvido para fins de estudo e portfólio.