soham bhagatSOFTWARE ENGINEER

Audelle

Create a playlist from a vibe.

Audelle grew around a simple constraint: share a playlist without an account, then make playback survive real browsers.

The constraint

Audelle main purpose is to turn a vibe into a playlist. I wanted it to be as simple as possible (and for this project I didn't want to deal with accounts or managing a database) so I decided to make it stateless.

Why the browser has to hold the state

Track IDs, order, and filters all live after the # in the URL, and the client rebuilds the playlist on load. The trade-off is the state is the link and it can get very long, but if the length is an issue I suggest you look into a URL shortener.

The player was the real work

There were several challenges in implementing the player, including handling different audio formats and ensuring compatibility across various browsers as well as devices (speaking directly to Safari on this one). If you do find additional issues please let the Github Issues tab reflect that.

Where it stands

Audelle runs as a React and Vite client with a FastAPI service behind it, using yt-dlp and FFmpeg to prepare media. GitOps runs the deployment as a single-replica production instance behind a dedicated Cloudflare tunnel. Its public and open to access feel free to use it for yourself.

STACK

REACT · VITE · FASTAPI · FFMPEG · KUBERNETES · CLOUDFLARE