Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Radio.Mixy — Canadian Music Radio

Radio.Mixy

Search. Press Play. Endless Music.

Live Canadian radio stations — browse by genre or province,
play community Top-50 favorites, and keep listening. 100% free forever.

Live site Mixy Music Buy Me a Coffee

→ Open Radio.Mixy · → Switch to Music


What is Radio.Mixy?

Radio.Mixy is a minimal live radio player for Canadian stations. No accounts. No clutter. Open the site, pick a station (or let Top-50 roll), press play, listen.

Catalog: ~1,500 Canadian stations synced from the public Radio Browser directory (countrycode=CA), organized into ~200 genres and all provinces & territories.

Radio.Mixy does not host audio files. Streams come from each station’s own public URL. Radio.Mixy is not affiliated with those broadcasters.

Sister site: Mixy — SoundCloud playlists & tracks.


Features

Search — Genres

Tap the Radio.Mixy title (search) → Genres. Type a genre name (country, classic rock, news, jazz…), tap a result, and Radio.Mixy starts a continuous queue of stations in that genre.

Search — Provinces

Same search panel → Provinces. Browse by Canadian province or territory (Alberta, Quebec, British Columbia, …). Tap one to play stations from that region.

Top-50 (community favorites)

Same search panel → Top-50. A live ranking of the 50 most liked Canadian stations.

  • Ranked by ♥ likes from listeners (one like per visitor per station)
  • Ties fall back to Radio Browser popularity signals
  • Filter by station name, tap a row, and it plays immediately
  • Default listening mode when you open the site

No spreadsheets — Top-50 is stored on the Radio.Mixy server (MySQL) and updates automatically when people favorite stations.

Favorite (heart)

On the player controls (right of Next): tap the heart to like (or unlike) the current radio station.

  • Your vote is tied to an anonymous browser ID (cookie / local storage) — no login
  • One like per station per visitor
  • Liked stations rise in Top-50
  • The heart fills when your like is recorded; tap again to remove it

Station list (queue)

Hamburger / list control opens the current session queue — previous, now playing, and upcoming stations. Jump to any station in the list.

Switch to Music

In the search panel, Switch to Music opens mixy.ca — Mixy’s SoundCloud music sister site.

Full-bleed station art

While a station plays, its cover / favicon fills the page background (dimmed), same visual language as Mixy.


How many stations?

Scope Approx. size
Canadian catalog (Radio Browser sync) ~1,500 stations
Active genres with stations ~200
Provinces & territories 13
Top-50 board 50 most liked

Numbers change as Radio Browser updates and as we re-sync playable streams.


How to use the player

Control What it does
Play / Pause Start or pause the live stream
Previous / Next Jump to the previous or next station in the session queue
♥ Favorite Like / unlike the current station → feeds community Top-50
Station list Open the session queue and jump to a station
Progress / LIVE Live stream indicator (continuous radio, not a fixed track)
Radio.Mixy (title) Opens search — Genres, Provinces, or Top-50
Switch to Music Opens mixy.ca
Status line Shows Loading, Ready, Playing, Paused, or Error

If something goes wrong

  • Some station streams are offline or block datacenter IPs — press Next to skip.
  • HTTPS pages cannot load plain http:// artwork; Radio.Mixy upgrades favicon URLs when possible.
  • Genre / province search works best with a short name; recent searches stay in your browser only.

Tips

  • Browsers block autoplay with sound — you start playback with Play.
  • Works on phone and desktop; no app install required.
  • Prefer Top-50 for crowd-vetted stations, or pick a province for a local feel.

How favorites & Top-50 work

Listener taps ♥ on station
        │
        ▼
POST /api/radio/like  { station_id }
        │
        ▼
MySQL station_reactions
  (anonymous_uuid + station_id + 'like')
  UNIQUE — one vote per visitor per station
        │
        ▼
Top-50 query
  ORDER BY like_count DESC,
           Radio Browser votes / clicks
  LIMIT 50
  1. Opening the site creates an anonymous UUID (cookie + local storage).
  2. inserts or deletes a row in station_reactions.
  3. Top-50 counts likes per station and shows the top 50 playable Canadian stations.
  4. Starting radio in Top-50 mode builds a queue from that ranking so you can skip through favorites.

How playback works

┌─────────────────────────────────────┐
│  radio.mixy.ca — custom player UI   │
│  cover, title, controls, search, ♥  │
└───────────────┬─────────────────────┘
                │
                ▼
┌─────────────────────────────────────┐
│  HTML5 <audio> (+ hls.js when HLS)  │
│  Play / pause / next / prev         │
└───────────────┬─────────────────────┘
                │
                ▼
┌─────────────────────────────────────┐
│  Station stream URL (HTTPS direct)  │
│  or same-origin PHP stream proxy    │
│  for HTTP-only port-80 streams      │
└─────────────────────────────────────┘

Search / Top-50 / Favorite:
  Genres / Provinces → /api/genres, /api/provinces
  Start / queue       → /api/radio/start, /session/…
  Top-50             → /api/radio/top50
  Favorite (♥)       → /api/radio/like
  Catalog sync       → Radio Browser API (admin)
  1. The page shows a custom UI (brand, artwork, transport, favorite, search).
  2. The API starts a listening session and fills a queue of stations (Top-50, genre, or province).
  3. The browser plays the station stream with HTML5 audio (HLS via hls.js when needed).
  4. HTTP streams on standard port 80 may go through a same-origin proxy so HTTPS pages stay secure.
  5. Favorites write to MySQL; Top-50 reads the same likes table.

Project structure (overview)

This GitHub repo is a public showcase (docs only). The live product is at radio.mixy.ca.

Piece Role
Static frontend Next.js app exported to static files (out/), hosted on the web root
Player UI Custom React interface over HTML5 audio / HLS
Station catalog MySQL (stations, genres, provinces, station_genres)
Radio API Node.js app (/api/radio/*, /api/genres, /api/provinces, …)
Top-50 Community likes in station_reactions → automatic ranking
Sync Admin “Sync from Radio Browser” for Canadian stations
Music sister mixy.ca — SoundCloud playlists & tracks
SEO Open Graph, sitemap, robots, JSON-LD

Stack

  • Frontend: Next.js (App Router), React, TypeScript, Tailwind CSS
  • Playback: HTML5 <audio> + hls.js for HLS streams
  • Catalog: Radio Browser API (Canada)
  • Top-50 / likes: MySQL (station_reactions) via Radio.Mixy API
  • Hosting: Static site + cPanel Node.js API (+ PHP stream proxy when needed)

Links


Built and managed by Denis Lop
Canadian radio · sister to mixy.ca

About

Radio.Mixy — Canadian Music Radio. Search. Press Play. Endless Music. Live at https://radio.mixy.ca

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors