Skip to content

novik133/NovaRadio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NovaRadio

Version PHP Laravel License PayPal

Professional internet radio CMS built with Laravel 12. A complete solution for managing your online radio station with AzuraCast integration, modern admin panel, content management, PWA support, and full GDPR compliance.

🌐 Website Β· πŸ“§ Contact Β· πŸ’» GitHub


✨ Features

Core Features

  • 🎡 AzuraCast Integration - Real-time now playing, song history, listener count, station info
  • 🎧 HTML5 Audio Player - Responsive player with volume control and play/pause
  • ⚑ Web Installer - Modern installation wizard with requirements check
  • 🎨 Theme System - WordPress-like theme management with upload, preview, activation
  • πŸ“ Page Management - Create and edit pages with TinyMCE rich text editor
  • πŸ‘₯ Team Management - Add team members with photos, roles, and social links
  • πŸ“… Schedule System - Display radio show schedules by day

Content Management

  • πŸ“° Articles/News System - Full blog functionality with categories and tags
  • 🎀 DJ Profiles - Extended DJ profiles with bio, genre, equipment, social links
  • 🎫 Events/Gigs - Event management with dates, venues, tickets
  • πŸ“ Media Manager - Upload, organize images in folders (like WordPress)
  • 🏷️ Categories & Tags - Organize content with taxonomy system
  • ✍️ TinyMCE Editor - Rich text editing in all content fields

Admin Panel Features

  • βš™οΈ Settings Panel - Multi-tab settings (General, Contact, Social, SEO, Appearance, Streaming)
  • πŸ–ΌοΈ Hero Image Upload - Customize homepage hero background
  • 🎨 Branding Controls - Upload logos, favicon, set theme colors
  • πŸ”” Update Notifications - Badge in admin header when new version available
  • πŸ‘€ My Profile Page - DJs can manage their own profiles and photos
  • πŸ“Š Dashboard - Overview of all content and statistics

Legal & Compliance

  • βš–οΈ Legal Pages - Privacy Policy, Terms of Service, Cookie Policy (GDPR compliant)
  • πŸͺ Cookie Consent - Modern granular cookie banner with toggle switches
  • πŸ‘€ Data Controller Info - Administrator details in legal pages

Technical Features

  • πŸ” Full SEO - Meta tags, Open Graph, Twitter Cards, friendly URLs
  • πŸ“± PWA Support - Web app manifest and service worker
  • οΏ½ Update System - GitHub-based update checking with changelog
  • πŸ” Admin Panel - Role-based access (admin, editor, moderator)
  • πŸ“Š Dashboard - Overview of pages, team, shows, and users

πŸ“‹ Requirements

  • PHP 8.2+ (tested on PHP 8.5)
  • MySQL 8.0+ or MariaDB 10.6+
  • Composer 2.5+
  • Nginx or Apache with mod_rewrite
  • SSL Certificate (recommended for production)
  • AzuraCast server (for streaming features)

PHP Extensions Required

  • pdo and pdo_mysql
  • mbstring
  • openssl
  • tokenizer
  • xml
  • curl
  • zip (for theme uploads)
  • fileinfo
  • json
  • gd or imagick (for image processing)
  • exif (for image metadata)

πŸš€ Installation

Method 1: Web Installer (Recommended)

  1. Upload files to your web server (public_html or wwwroot)

  2. Create database in MySQL/MariaDB:

    CREATE DATABASE novaradio CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. Set permissions:

    chmod -R 755 storage
    chmod -R 755 bootstrap/cache
    mkdir -p storage/framework/{views,cache,sessions,testing}
    mkdir -p storage/logs storage/app/public
  4. Install dependencies:

    composer install --no-dev --optimize-autoloader
  5. Run installer - Visit https://your-domain.com/install

  6. Follow wizard:

    • Enter database credentials
    • Create admin account
    • (Optional) Configure AzuraCast connection

Method 2: Manual Installation

# 1. Clone or upload files to server
cd /var/www/novaradio

# 2. Install dependencies
composer install --no-dev --optimize-autoloader

# 3. Create environment file
cp .env.example .env

# 4. Set permissions
chmod -R 755 storage bootstrap/cache
mkdir -p storage/framework/{views,cache,sessions,testing}

# 5. Generate app key
php artisan key:generate

# 6. Configure database in .env
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=novaradio
# DB_USERNAME=root
# DB_PASSWORD=yourpassword

# 7. Run migrations and seeders
php artisan migrate --force
php artisan db:seed --force

# 8. Set APP_INSTALLED=true in .env

πŸ“ Project Structure

NovaRadio/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ Http/
β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ Admin/        # Admin panel controllers
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ArticleController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CategoryController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ DjProfileController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EventController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ MediaController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingsController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TagController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TeamController.php
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeController.php
β”‚   β”‚   β”‚   β”‚   └── UpdateController.php
β”‚   β”‚   β”‚   β”œβ”€β”€ Api/          # API controllers
β”‚   β”‚   β”‚   β”œβ”€β”€ Install/      # Installer controller
β”‚   β”‚   β”‚   └── ...           # Frontend controllers
β”‚   β”‚   └── Middleware/
β”‚   β”‚       └── AdminMiddleware.php
β”‚   β”œβ”€β”€ Models/               # Eloquent models
β”‚   β”‚   β”œβ”€β”€ Article.php
β”‚   β”‚   β”œβ”€β”€ Category.php
β”‚   β”‚   β”œβ”€β”€ DjProfile.php
β”‚   β”‚   β”œβ”€β”€ Event.php
β”‚   β”‚   β”œβ”€β”€ Page.php
β”‚   β”‚   β”œβ”€β”€ Setting.php
β”‚   β”‚   β”œβ”€β”€ Tag.php
β”‚   β”‚   β”œβ”€β”€ TeamMember.php
β”‚   β”‚   └── User.php
β”‚   β”œβ”€β”€ Providers/
β”‚   β”‚   └── AppServiceProvider.php
β”‚   └── Services/             # Business logic
β”‚       β”œβ”€β”€ AzuraCastService.php
β”‚       β”œβ”€β”€ SeoService.php
β”‚       └── UpdateService.php
β”œβ”€β”€ bootstrap/
β”œβ”€β”€ config/
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ migrations/           # All database migrations
β”‚   └── seeders/
β”‚       └── DatabaseSeeder.php # Sample data
β”œβ”€β”€ public/                   # Web root
β”‚   β”œβ”€β”€ images/               # Local images storage
β”‚   β”‚   β”œβ”€β”€ articles/
β”‚   β”‚   β”œβ”€β”€ events/
β”‚   β”‚   β”œβ”€β”€ hero/
β”‚   β”‚   └── team/
β”‚   β”œβ”€β”€ js/tinymce/           # Self-hosted TinyMCE
β”‚   β”œβ”€β”€ pwa/                  # PWA manifest and sw.js
β”‚   └── themes/
β”‚       └── default/          # Frontend theme
β”‚           β”œβ”€β”€ css/
β”‚           └── js/
β”œβ”€β”€ resources/
β”‚   └── views/
β”‚       β”œβ”€β”€ admin/            # Admin panel views
β”‚       β”œβ”€β”€ install/          # Installer views
β”‚       └── themes/           # Frontend themes
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ web.php               # Web routes
β”‚   └── console.php
β”œβ”€β”€ storage/                  # Cache, logs, sessions
β”‚   └── app/public/media      # Media Manager uploads
└── vendor/                   # Composer dependencies

βš™οΈ Configuration

AzuraCast Integration

Add to your .env file:

AZURACAST_BASE_URL=https://your-azuracast.com
AZURACAST_API_KEY=your_api_key_here
AZURACAST_STATION_ID=1

To get API key:

  1. Log in to AzuraCast admin panel
  2. Go to My Account β†’ API Keys
  3. Generate new key

GitHub Updates

Add to your .env file:

GITHUB_REPO=novik133/NovaRadia
GITHUB_TOKEN=your_github_token (optional, for private repos)

πŸ”’ Security

  • CSRF Protection - All forms protected by default
  • XSS Protection - Blade escaping enabled
  • SQL Injection - Query builder and Eloquent ORM
  • Password Hashing - Bcrypt with proper rounds
  • Admin Middleware - Role-based access control

πŸ†˜ Troubleshooting

Permission Denied Errors

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

Cache Path Error

mkdir -p storage/framework/{views,cache,sessions,testing}
chmod -R 777 storage/framework/views

500 Error After Installation

php artisan config:clear
php artisan cache:clear
php artisan view:clear

Composer Install Fails

# Clear composer cache
composer clear-cache

# Install without scripts first
composer install --no-scripts

# Then run scripts manually
php artisan package:discover

πŸ”„ Updating

The system includes a built-in update checker:

  1. Go to Admin Panel β†’ Updates
  2. Click Check for Updates
  3. If update available, review changelog
  4. Click Install Update

Note: Updates are pulled from GitHub releases. Create a backup before updating.


πŸ”’ License

NovaRadio Freeware License

Copyright (c) 2025-2026 Kamil 'Novik' Nowicki

Permissions:

  • βœ… Free to use for personal and commercial projects
  • βœ… Install on unlimited servers
  • βœ… Create multiple radio stations

Restrictions:

  • ❌ Modification of source code is NOT allowed
  • ❌ Redistribution is NOT allowed
  • ❌ Removal of copyright notices is NOT allowed

Premium Add-ons: The author reserves the right to introduce paid add-ons, themes, and extensions for NovaRadio.

For licensing inquiries: kamil@kamilnowicki.com


πŸ‘€ Author

Kamil 'Novik' Nowicki


πŸ™ Credits

Built with:


πŸ“Έ Image Management

NovaRadio includes a complete media management system with role-based access:

Feature Who Can Access Location
Hero Image Admin only Settings β†’ Appearance
Logos/Favicon Admin only Settings β†’ Appearance
DJ/Team Photos Admin + Self Team β†’ Edit OR My Profile
Article Images Authors + Admin Articles β†’ Browse Media
Media Library All admins Media Library menu
Theme Screenshots Auto-generated Theme directory

Storage Structure

public/images/
β”œβ”€β”€ hero/           # Homepage hero image (admin only)
β”œβ”€β”€ team/           # DJ/Team member photos
β”œβ”€β”€ articles/       # Article featured images
β”œβ”€β”€ events/         # Event/gig images
└── default/        # Default theme assets

storage/app/public/
└── media/          # Media Manager uploads (organized by date)

Made with ❀️ in Poland

About

Professional internet radio CMS built with Laravel 12 for AzuraCast. Features real-time station data, schedule system, DJ profiles, and news management. Includes a web installer, PWA support, theme system, and full GDPR compliance. A complete, modern solution for managing online radio stations and content.

Topics

Resources

License

Stars

Watchers

Forks

Packages