Radios is a website template for an online radio station, built on Bootstrap 5. The home page opens with a full-screen photo hero and a live audio player, followed by featured shows, the weekly radio program, a listener testimonial carousel, a newsletter sign-up, the DJ line-up and news and events. The layout is responsive and mobile-ready. There are twelve pages: home, live, schedule, podcasts, DJs, DJ profile, events, event, article, about, contact and an episode list.
The live page shows the current show and track, recently played songs, today’s shows and a song-request form. The schedule page lists the shows for each day of the week in tabs, the podcasts page has the latest episode player, categories and an episode archive, and the DJ profile page has a bio, episodes and upcoming events. The event page combines a photo gallery, the DJ line-up and a venue map, and the contact page has a contact form, contact details and a FAQ. Radios gives a radio station, internet radio or music podcast a ready-made site for its shows, hosts and listeners.
What’s new in 3.0
Bootstrap 5.3.8 compiled from Sass with the theme for every page, and plain JavaScript with no jQuery: Swiper 14 for the testimonial carousel, PhotoSwipe 5 for the event gallery, a dialog mobile menu, scroll reveals and a video dialog from the Colorlib kit, and Lucide SVG icons instead of the icon font. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the twelve pages went from 29.4 MB to 15.3 MB, and the home page from 3.2 MB to 2.1 MB. Every photo has an AVIF version with the JPEG as the fallback, real dimensions and lazy loading below the first screen, and the hero photos are sharper on large screens.
No third-party requests: Nunito Sans and Roboto Mono are self-hosted, the audio players use two short demo clips that ship with the template, the social logos are a small icon subset, the venue map loads only when a visitor asks for it, and a Google Analytics 4 snippet stays commented out until you add your own ID.
Working forms: the contact, newsletter and song-request forms send through PHP mail handlers with validation, status messages and a spam trap, and the episode play buttons play the episode.
Accessibility: a skip link, one main heading per page, labelled fields, keyboard access to the menu, tabs, FAQ and DJ cards, and text contrast of at least 4.5:1, with a darker green for text and button labels and the hero titles drawn above their photo overlay.
Fixes: the song-request window no longer leaves an empty gap on the live page, the article breadcrumb and badges are styled again, and each page has its own title, description and social sharing tags.