Skip to content

sourcecodeRTX/Rab_Da_Radio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌍 World FM Radio - Modern Web App

HTML5 CSS3 JavaScript jQuery Bootstrap FontAwesome

🎡 Discover the world through radio - A modern, feature-rich web application to stream radio stations from around the globe

πŸ“‹ Table of Contents

✨ Features

🎡 Core Radio Features

  • 🌍 Global Radio Access - Stream radio stations from 200+ countries
  • πŸŽͺ Live Audio Streaming - High-quality audio playback with Web Audio API
  • πŸ”Š Advanced Audio Controls - Play/pause, volume control, mute functionality
  • πŸ“Š Real-time Audio Visualization - Dynamic frequency spectrum display
  • 🎨 Theme-aware Visualizations - Audio bars adapt to selected theme colors

πŸ—ΊοΈ Country & Station Management

  • 🏳️ Country Flags - Visual country selection with flag displays
  • πŸ” Smart Search - Search countries and stations with instant filtering
  • 🌏 Regional Filtering - Browse by continent (Africa, Americas, Asia, Europe, Oceania)
  • πŸ“» Station Metadata - Genre detection, language info, FM frequencies
  • ⭐ Favorites System - Save and manage favorite radio stations
  • πŸ“œ Recently Played - Track your listening history

🎨 Visual & UI Features

  • 🌈 8 Beautiful Themes - From classic to modern, light to dark modes
  • πŸ“± Fully Responsive - Perfect on desktop, tablet, and mobile
  • ✨ Smooth Animations - CSS transitions and micro-interactions
  • 🎯 Modern Design - Clean, intuitive interface with FontAwesome icons
  • πŸ”„ Theme Persistence - Your selected theme is remembered
  • πŸŽͺ Loading Animations - Elegant loading states and spinners

πŸ”§ Technical Features

  • πŸ’Ύ Local Storage - Settings and favorites persist across sessions
  • 🌐 API Integration - Real-time data from Radio Browser API
  • 🎡 Web Audio API - Advanced audio processing and visualization
  • πŸ“± Progressive Enhancement - Works on all modern browsers
  • ⚑ Performance Optimized - Efficient rendering and memory management

πŸš€ Demo

Radio App Demo

Live Demo: World FM Radio (Replace with actual demo URL)

πŸ“Έ Screenshots

🏠 Home Page

Home Page

  • Modern player interface with audio visualization
  • Country selection with beautiful flag displays
  • Theme selector with live previews

πŸ“» Station Browser

Station Browser

  • Grid layout with station cards
  • Genre icons and metadata display
  • Play buttons and favorite controls

🎨 Theme Gallery

  • 8 carefully crafted themes
  • Real-time theme switching
  • Color-coordinated audio visualizations

🎬 Live Video Demo

Live Demo

Experience the app in action with our interactive demo showing:

  • Theme switching in real-time
  • Audio visualization responding to music
  • Smooth navigation between countries and stations
  • Modern UI animations and transitions

πŸ› οΈ Technologies Used

Frontend Technologies

Technology Version Purpose
HTML5 HTML5 Semantic markup and structure
CSS3 CSS3 Modern styling with custom properties
JavaScript ES6+ Dynamic functionality and interactions
jQuery 3.5.1 DOM manipulation and AJAX requests

UI & Styling

Library Version Purpose
Bootstrap 4.5.2 Responsive grid system
FontAwesome 6.4.0 Beautiful icons throughout the app
Google Fonts - Montserrat & Open Sans typography

APIs & External Services

  • 🌐 Radio Browser API - Global radio station database
  • 🏳️ Flagpedia API - Country flag images
  • 🎡 Web Audio API - Audio processing and visualization

⚑ Quick Start

Prerequisites

  • 🌐 Modern web browser (Chrome, Firefox, Safari, Edge)
  • 🌍 Internet connection for streaming
  • πŸ”Š Audio output device (speakers/headphones)

Installation

  1. πŸ“₯ Clone the repository

    git clone https://github.com/sourcecodeRTX/Rab_Da_Radio.git
    cd world-fm-radio
  2. πŸš€ Launch the application

    Option A: Direct File Opening

    # Open index.html in your browser
    start index.html  # Windows
    open index.html   # macOS
    xdg-open index.html  # Linux

    Option B: Local Server (Recommended)

    # Python 3
    python -m http.server 8000
    
    # Python 2
    python -m SimpleHTTPServer 8000
    
    # Node.js (if you have http-server installed)
    npx http-server
    
    # PHP
    php -S localhost:8000
  3. 🌍 Open in browser

    • Navigate to http://localhost:8000
    • Or directly open index.html file

First Use

  1. 🎨 Select a theme from the theme selector in the header
  2. 🌍 Choose a country from the country grid
  3. πŸ“» Pick a radio station from the station list
  4. 🎡 Click play and enjoy!

πŸ“ Project Structure

πŸ“¦ World FM Radio/
β”œβ”€β”€ πŸ“„ index.html              # Main HTML file
β”œβ”€β”€ πŸ“„ README.md               # This documentation
β”œβ”€β”€ 🎨 style.css               # Main CSS styles and themes
β”œβ”€β”€ 🎨 player-styles.css       # Audio player specific styles
β”œβ”€β”€ 🎨 station-styles.css      # Station cards and lists styles
β”œβ”€β”€ πŸ“œ script.js               # Main JavaScript functionality
β”œβ”€β”€ πŸ“œ theme-preview.js        # Theme preview component
└── πŸ“ images/
    └── πŸ–ΌοΈ 1.png              # App logo and branding

File Breakdown

File Size Purpose
index.html ~5KB πŸ—οΈ App structure and layout
style.css ~45KB 🎨 Main styles, themes, and responsive design
player-styles.css ~8KB 🎡 Audio player and visualization styles
script.js ~50KB ⚑ Core functionality and interactions
theme-preview.js ~4KB 🎨 Theme switching component

🎨 Themes

The app includes 8 beautiful themes, each with its own personality:

🌊 Light Blue Classic (Default)

  • Colors: Ocean blues and whites
  • Mood: Fresh, clean, modern
  • Best for: General use, professional environments

🌳 Classic Walnut

  • Colors: Warm browns and creams
  • Mood: Vintage, cozy, nostalgic
  • Best for: Relaxed listening, vintage enthusiasts

🌿 Art Deco Green

  • Colors: Nature greens and whites
  • Mood: Fresh, organic, calming
  • Best for: Focus, productivity, nature lovers

β˜€οΈ Bakelite Ivory

  • Colors: Warm yellows and whites
  • Mood: Bright, cheerful, retro
  • Best for: Daytime listening, positive vibes

🏠 Mid-Century Teak

  • Colors: Muted browns and beiges
  • Mood: Sophisticated, warm, timeless
  • Best for: Evening listening, sophisticated taste

⚑ Retro Transistor Blue

  • Colors: Electric blues and cyans
  • Mood: Energetic, modern, tech-inspired
  • Best for: Electronic music, modern feel

πŸš€ Steampunk Brass

  • Colors: Industrial browns and brass
  • Mood: Industrial, unique, vintage-futuristic
  • Best for: Alternative music, unique aesthetics

❀️ Vintage Red

  • Colors: Classic reds and whites
  • Mood: Bold, passionate, classic
  • Best for: Jazz, classical, romantic music

πŸŒ™ Dark Mode

  • Colors: Dark grays and muted colors
  • Mood: Easy on eyes, modern, sleek
  • Best for: Night listening, eye strain reduction

πŸ”§ Configuration

Theme Customization

Themes are defined in script.js and can be easily customized:

const themes = [
  {
    name: "Your Custom Theme",
    icon: "fas fa-star",
    description: "Your theme description",
    "--body-bg": "#your-color",
    "--container-bg": "#your-color",
    "--text-color": "#your-color",
    "--button-bg": "#your-color",
    // ... more CSS variables
  }
];

API Configuration

The app uses Radio Browser API. No API key required:

  • Base URL: https://de1.api.radio-browser.info/json/
  • Rate Limit: Respectful usage, no explicit limits
  • CORS: Enabled for web applications

Audio Settings

Configurable in script.js:

// Audio visualization settings
analyser.fftSize = 1024;           // Frequency resolution
const bufferLength = analyser.frequencyBinCount;

// Volume settings
const defaultVolume = 0.8;         // Default volume (80%)
const volumeStep = 0.05;           // Volume adjustment step

πŸ“± Responsive Design

Breakpoints

Device Width Layout Changes
πŸ“± Mobile < 768px Single column, stacked elements
πŸ“Ÿ Tablet 768px - 992px Two columns, larger touch targets
πŸ’» Desktop > 992px Full grid layout, hover effects

Responsive Features

  • βœ… Fluid Typography - Scales with screen size
  • βœ… Flexible Grids - CSS Grid with auto-fit columns
  • βœ… Touch Optimization - Larger buttons on mobile
  • βœ… Swipe Gestures - Mobile-friendly interactions
  • βœ… Orientation Support - Works in portrait and landscape

🌐 API Integration

Radio Browser API

// Country list endpoint
GET https://de1.api.radio-browser.info/json/countries

// Stations by country
GET https://de1.api.radio-browser.info/json/stations/bycountrycodeexact/{code}

// Search stations
GET https://de1.api.radio-browser.info/json/stations/search?name={query}

Response Handling

  • βœ… Error Handling - Graceful fallbacks for API failures
  • βœ… Loading States - Visual feedback during data fetching
  • βœ… Caching - Local storage for improved performance
  • βœ… Retry Logic - Automatic retries for failed requests

πŸŽ›οΈ Audio Features

Audio Player

  • 🎡 HTML5 Audio - Native browser audio support
  • πŸ”Š Volume Control - Smooth volume slider
  • πŸ”‡ Mute Function - One-click mute/unmute
  • ⏯️ Play/Pause - Responsive playback controls

Audio Visualization

  • πŸ“Š Frequency Bars - Real-time spectrum analysis
  • 🎨 Theme Integration - Colors match selected theme
  • ✨ Smooth Animations - 60fps visualizations
  • 🌈 Dynamic Effects - Bass-responsive animations

Technical Specifications

  • Sample Rate: Matches source stream
  • Bit Depth: 16-bit minimum
  • Channels: Mono/Stereo support
  • Formats: MP3, AAC, OGG, WebM

πŸ’Ύ Local Storage

The app stores various data locally for better user experience:

Stored Data

localStorage.setItem('selectedTheme', themeName);
localStorage.setItem('favoriteStations', JSON.stringify(favorites));
localStorage.setItem('recentlyPlayed', JSON.stringify(recent));
localStorage.setItem('playerVolume', volumeLevel);
localStorage.setItem('userPreferences', JSON.stringify(prefs));

Data Persistence

  • βœ… Theme Selection - Remembered across sessions
  • βœ… Favorite Stations - Saved station list
  • βœ… Volume Level - Audio preferences
  • βœ… Recent History - Last played stations
  • βœ… Search History - Quick access to searches

🀝 Contributing

We welcome contributions! Here's how you can help:

πŸ› Bug Reports

  1. πŸ“ Use the issue template
  2. πŸ” Include browser/OS info
  3. πŸ“‹ Provide reproduction steps
  4. πŸ“· Add screenshots if applicable

✨ Feature Requests

  1. πŸ’‘ Describe the feature clearly
  2. 🎯 Explain the use case
  3. πŸ” Check existing issues first
  4. 🎨 Include mockups if helpful

πŸ’» Code Contributions

  1. 🍴 Fork the repository
  2. 🌿 Create a feature branch
  3. βœ… Test thoroughly
  4. πŸ“ Update documentation
  5. πŸ”„ Submit a pull request

Development Setup

# Clone your fork
git clone https://github.com/sourcecodeRTX/Rab_Da_Radio.git

# Create feature branch
git checkout -b feature/amazing-feature

# Make changes and test
# ... your development work ...

# Commit and push
git commit -m "Add amazing feature"
git push origin feature/amazing-feature

Code Style

  • βœ… Consistent Formatting - Use 4 spaces for indentation
  • βœ… Meaningful Names - Clear variable and function names
  • βœ… Comments - Document complex logic
  • βœ… Modern JavaScript - ES6+ features preferred

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License Summary

  • βœ… Commercial Use - Use in commercial projects
  • βœ… Modification - Modify and distribute
  • βœ… Distribution - Share with others
  • βœ… Private Use - Use privately
  • ❌ Liability - No warranty provided
  • ❌ Trademark Use - No trademark rights

πŸ™ Acknowledgments

APIs & Services

  • 🌐 Radio Browser - Comprehensive radio station database
  • 🏳️ Flagpedia - Beautiful country flag images
  • πŸ”€ Google Fonts - Montserrat and Open Sans fonts

Libraries & Frameworks

  • ⚑ jQuery - Simplified DOM manipulation
  • 🎨 Bootstrap - Responsive CSS framework
  • 🎯 Font Awesome - Beautiful icon library

Inspiration

  • πŸ“» Classic Radio Design - Vintage radio aesthetics
  • 🎡 Music Streaming Apps - Modern UI patterns
  • 🌈 Material Design - Color and animation principles

πŸš€ Getting Started Now!

Ready to explore world radio?

  1. πŸ“₯ Download or clone this repository
  2. 🌐 Open index.html in your browser
  3. 🎨 Pick your favorite theme
  4. 🌍 Choose a country
  5. πŸ“» Select a station
  6. 🎡 Enjoy radio from around the world!

Made with ❀️ by [Your Name]

"Discover the world through radio" πŸŒπŸ“»βœ¨

About

A modern, feature-rich web application to stream radio stations from around the globe https://sourcecodertx.github.io/Rab_Da_Radio/

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published