Behind the mixing desk
How it's built
Daily Hub is one app built three times, in Django, Next.js, and Laravel, so the frameworks can be compared side by side.
Three builds
| Django | Next.js | Laravel | |
|---|---|---|---|
| Language | Python | TypeScript | PHP |
| Framework | Django 6 | Next.js 16, React 19 | Laravel 13 |
| Content and admin | Django admin | Payload CMS | Eloquent models and config, no admin |
| Live radio updates | Channels and Redis over WebSockets | Server-Sent Events | Reverb over WebSockets |
| Pages | Class-based views and templates | React Server Components | Controllers and Blade |
| Database | Postgres | Postgres | Postgres |
| Code | daily-hub-django | daily-hub-nextjs | daily-hub-laravel |
How the pieces work
One class per page
Each menu link is a module that owns its page and its API calls. The menu, the homepage, and the URLs are all built from one list.
A background listener
A separate process checks both stations every 15 seconds, updates open pages, saves plays for the charts, and looks up artists and song previews ahead of time.
Everything is saved once
Artists and songs are fetched from MusicBrainz, Wikipedia, Apple, and Deezer one time, then stored, so pages stay fast and those free services are not overused.
Tests run offline
Each outside service sits behind a small client class, so tests swap in a fake and never touch the internet.