Web & Android music streaming · 2026
Wavelet
Wavelet is a music streaming server and its two clients. The Next.js 16 server, running entirely on Vercel, searches the Deezer catalog, streams tracks progressively from the first byte, then keeps them on Cloudflare R2 for later plays. The web client (⌘K palette, synced lyrics, gapless playback) and the Material 3 Flutter app (preloading, offline downloads, media notification) share the same API, described in OpenAPI.
~130 ms
Next track
2
Clients, one API
v1.5
Offline
Highlights
- 01Streaming engine on Vercel Functions: progressive streams with Range requests, spooled to disk and shared by concurrent plays, then copied to Cloudflare R2 and served through presigned URLs.
- 02Web client: search and downloads in a ⌘K palette, synced lyrics, gapless playback (Media Source Extensions, sample-accurate), public track sharing with an OG image.
- 03Material 3 Expressive Flutter app (Riverpod 3, just_audio, audio_service): the same queue as the web, preloading of the next tracks (playback in ~130 ms instead of ~1.4 s), Wi-Fi only by default.
- 04Offline mode (v1.5): albums and playlists downloaded with Range resume, SHA-256 integrity checks, the session kept in the platform keystore (Keystore, Keychain, DPAPI).
- 05Spotify playlist import up to 1,000 tracks, secrets encrypted with AES-256-GCM, Vitest coverage thresholds in GitHub Actions CI and browser e2e tests of the critical flows.
Technologies
- Next.js 16
- React 19
- TypeScript
- Zustand
- Prisma
- PostgreSQL
- Cloudflare R2
- Better Auth
- Flutter
- Riverpod
- Vitest
- Vercel
Gallery



Next project
Chantastik