Music is universal. Your links should be too.
BridgeBeats is a cross-platform music link converter that helps you share music effortlessly across streaming platforms. Share a link from Apple Music, Spotify, or Tidal, and BridgeBeats finds the same track or album on all supported servicesβensuring every listener can enjoy the music, regardless of their preferred platform.
Ever wanted to share your favorite song, only to realize your friend uses a different streaming service? BridgeBeats solves this by automatically finding the same track or album on all major platformsβso everyone can listen, no matter where they stream.
- Instant Conversion - Drop a music link and get matches across Apple Music, Spotify, and Tidal
- Discord Bot - Automatically converts music links in your Discord server
- Web Interface - Simple browser-based tool for quick conversions
- RESTful API - Integrate music link conversion into your own apps
- Accurate Matching - Uses ISRC (tracks) and UPC (albums) for precise cross-platform matches
- Rich Previews - OpenGraph cards that work everywhereβDiscord, Slack, Twitter, and more
- Aspire Dashboard - Built-in observability and telemetry dashboard (role-based access)
Get started in 5 minutes with automatic HTTPS:
git clone https://github.com/tsmarvin/BridgeBeats.git
cd BridgeBeats/containers
./setup-secrets.sh
nano secrets/apple_key.p8
nano secrets/atproto_password.txt
nano secrets/discord_token.txt
nano secrets/spotify_client_secret.txt
nano secrets/tidal_client_secret.txt
# Edit secrets/ with your credentials
cp .env.example .env
nano .env
# Edit .env with your configuration
docker compose up -dVisit https://localhost to start converting links.
π Complete Quick Start Guide β
docker run -p 10000:10000 \
-e SPOTIFY_CLIENT_ID="your_client_id" \
-e SPOTIFY_CLIENT_SECRET="your_client_secret" \
ghcr.io/tsmarvin/bridgebeats:latestVisit http://localhost:10000 to start converting links.
- Install .NET 10.0 SDK
- Clone the repository
- Add your API credentials to
appsettings.json(see Configuration Guide)
Option A: Using .NET Aspire (Recommended)
aspire runThis starts the app with the Aspire Dashboard for monitoring, tracing, and structured logging. See the Local Development Guide for details.
Option B: Direct .NET Run
dotnet runBridgeBeats/
βββ src/
β βββ BridgeBeats.Web/ # ASP.NET Core web application (MVC, controllers, views)
β βββ BridgeBeats.Services/ # Business logic and service layer
β βββ BridgeBeats.Providers/ # Music provider integrations (Apple Music, Spotify, Tidal)
β βββ BridgeBeats.Infrastructure/ # Data access, caching, identity, storage
β βββ BridgeBeats.Contracts/ # Shared DTOs, interfaces, enums, constants
β βββ BridgeBeats.AppHost/ # .NET Aspire orchestration
β βββ BridgeBeats.ServiceDefaults/ # Shared service configuration (telemetry, resilience)
βββ Tests/ # Test project
β βββ Unit/ # Unit tests
β βββ Integration/ # Integration tests (service interactions)
β βββ EndToEnd/ # End-to-end tests (full request/response flows)
βββ docs/ # Documentation (guides, API reference)
βββ containers/ # Docker deployment configuration
βββ .github/ # GitHub templates, workflows, and community files
- Quick Start Guide - Get up and running in 5 minutes
- Local Development Guide - Develop with .NET Aspire Dashboard
- Configuration Guide - Set up API credentials and environment variables
- API Reference - Integrate BridgeBeats into your applications
- Deployment Guide - Deploy to Docker, Kubernetes, or cloud platforms
- SBOM and Provenance Guide - Verify supply chain security and inspect dependencies
- Caddy Cloudflare Guide - Configure Cloudflare DNS for wildcard certificates
- Contributing Guidelines - Learn how to contribute to BridgeBeats
- Caching Guide - Configure ATProto PDS caching
- ATProto Lexicon Setup - Configure lexicon resolution and DNS for ATProto compliance
BridgeBeats connects to official APIs from music streaming services. When you provide a link:
- Extract - Identifies the track or album from the URL
- Match - Uses external IDs (ISRC/UPC) or metadata to find equivalents
- Return - Provides links for all available platforms
The result? You share the music, not the platform.
Add BridgeBeats to your Discord server to automatically convert music links in conversations:
- Get a Discord bot token (see Configuration Guide)
- Set
DISCORD_TOKENenvironment variable - Invite the bot to your server
When someone shares a Spotify link, BridgeBeats responds with a card showing Apple Music and Tidal alternativesβand vice versa.
- .NET 10.0 - Modern, cross-platform framework
- Apple MusicKit API - Apple Music integration
- Spotify Web API - Spotify integration
- Tidal API - Tidal integration
- NetCord - Discord bot library
- API keys are hashed and never stored in plain text
- Input URLs with tracking parameters are kept private (not stored on ATProto PDS)
- Rate limiting ensures fair usage (20 requests/hour per user)
- All credentials configured via environment variables
BridgeBeats can be deployed anywhere:
- Docker - Simple containerized deployment
- Cloud Services - Azure Container Apps, AWS ECS, Google Cloud Run
- Kubernetes - Scalable orchestration
- Self-hosted - Run natively on Linux, Windows, or macOS
See the Deployment Guide for platform-specific instructions.
Create an account to get your API key:
curl -X POST http://localhost:10000/account/register \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"SecurePassword123"}'Convert a link:
curl -X POST http://localhost:10000/music/lookup/urlList \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"uri":"https://open.spotify.com/track/..."}'See the API Reference for complete documentation.
# Run all tests
dotnet test
# Run unit tests only (no API credentials needed)
dotnet test --filter "FullyQualifiedName~Unit"For more details on testing, see the Contributing Guidelines.
We welcome contributions! Whether you're fixing bugs, adding features, improving documentation, or helping others, your contributions make BridgeBeats better for everyone.
Please read our Contributing Guidelines to get started. Key points:
- Follow our Code of Conduct
- Check existing issues before opening a new one
- Use our issue templates for bug reports and feature requests
- Keep pull requests focused and well-tested
- Respect our security practices - see Security Policy
This project is licensed under the MIT License - see the LICENSE file for details.
Taylor Marvin
Because music connects usβno matter where we listen.