Getting Started

Welcome to NovaRadioCMS — a complete website management system for your internet radio station. No coding knowledge required to use it!

Think of NovaRadioCMS like WordPress, but designed specifically for radio stations. You get a website, a radio player, content management, and more — all in one package.

What Can You Do With It?

Play your radio stream on your website
Write articles and news about your station
Create DJ profiles with photos and bios
Show your radio schedule
Change the look with themes
Stay GDPR compliant automatically

Current Version

NovaRadioCMS v2.0.5 — built on Laravel 12, PHP 8.2+

NEED HELP?

Check the Knowledge Base for common questions, or open an issue on GitHub.

What You Need

Before installing NovaRadioCMS, make sure your web hosting meets these requirements. Most modern hosting providers support all of them.

Server Requirements

PHP 8.2 or higher

The programming language NovaRadioCMS runs on

MySQL 8.0+ or MariaDB 10.6+

The database where your content is stored

Composer 2.5+

A tool for installing PHP packages (your host may have it pre-installed)

Web Server Nginx or Apache

The software that serves your website to visitors

SSL Certificate Recommended

Makes your site use https:// — most hosts offer free SSL via Let's Encrypt

Not sure if your hosting supports these? Contact your hosting provider and ask: "Do you support PHP 8.2 and MySQL 8.0?" — most shared hosting plans do.

PHP Extensions

These are usually enabled by default. If you get errors during installation, you may need to enable them in your hosting control panel:

pdo · pdo_mysql · mbstring · openssl · tokenizer · xml · curl · zip · fileinfo · json · gd or imagick · exif

Installation Guide

Follow these steps to get NovaRadioCMS up and running. We recommend the Web Installer method — it's the easiest way.

⏱ ESTIMATED TIME

About 10-15 minutes for a fresh installation.

Method 1: Web Installer (Recommended)

This is the easiest way. The installer will guide you through everything.

1

Download the files

Download NovaRadioCMS from GitHub and upload all files to your web server's root folder.

git clone https://github.com/novik133/NovaRadio.git
2

Create a database

Log in to your hosting control panel and create a new MySQL database.

CREATE DATABASE novaradio CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3

Set folder 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 the web installer

Open your browser and go to:

https://your-domain.com/install
6

You're done!

Your NovaRadioCMS is now installed. Log in to the admin panel at /admin to start customizing.

Method 2: Manual Installation (Advanced)

# Navigate to your web root
cd /var/www/novaradio

# Install PHP packages
composer install --no-dev --optimize-autoloader

# Set up environment
cp .env.example .env
chmod -R 755 storage bootstrap/cache
php artisan key:generate

# Configure database in .env, then:
php artisan migrate --force
php artisan db:seed --force

Configuration

After installation, you can configure additional features through your .env file or the admin panel.

Automatic Updates

NovaRadioCMS can check for new versions on GitHub and notify you in the admin panel.

GITHUB_REPO=novik133/NovaRadio
GITHUB_TOKEN=your_github_token # optional, only for private repos

Features Guide

Here's a detailed look at everything NovaRadioCMS can do for your radio station.

Radio Player

Your website automatically shows a live radio player with play/pause and volume controls, displaying current song, song history, and listener count.

Articles & News

Write blog posts and news articles using a visual editor (TinyMCE). Organize them with categories and tags. Each article gets its own page with SEO-friendly URLs.

DJ Profiles

Create detailed pages for each DJ with their photo, biography, music genres, equipment, and social media links.

Show Schedule

Set up your weekly broadcast schedule showing which shows run on which days and times.

Theme System

Change the entire look of your website with themes — just like WordPress. Upload a theme ZIP file, preview it, and activate it with one click.

Media Manager

Upload and organize images in folders. Use drag & drop to upload files. Insert images directly into your articles from the media library.

Team Management

Add your team members with photos, roles, and their social media profiles.

Legal & GDPR

Built-in privacy policy, terms of service, and cookie policy pages. A cookie consent banner with granular controls.

SEO

Automatic meta tags, Open Graph tags for social sharing, Twitter Cards, and search-engine-friendly URLs.

PWA Support

Your website can be installed on phones and tablets like a native app, with offline support.

Using the Admin Panel

The admin panel is where you manage everything. Access it at /admin after logging in.

Dashboard

The dashboard gives you a quick overview: total pages, team members, shows, users, and any pending update notifications.

Settings Tabs

General

Site name, tagline, and basic settings

Contact

Contact information and email settings

Social

Social media links (Facebook, Twitter, Instagram, etc.)

SEO

Meta tags, Open Graph, and search engine settings

Appearance

Hero image, logo, favicon, and color scheme

Streaming

Stream URL and radio player settings

User Roles

Admin

Full access to everything — settings, content, users, themes, media

Editor

Can create and edit content but cannot change settings or manage users

Moderator

Limited access — can view content and perform basic moderation tasks

Project Structure

For developers who want to understand or customize the codebase, here's how NovaRadioCMS is organized:

NovaRadio/
├── app/
│ ├── Http/Controllers/
│ │ ├── Admin/ # Admin panel logic
│ │ ├── Api/ # API endpoints
│ │ └── Install/ # Web installer
│ ├── Models/ # Database models
│ └── Services/ # Business logic
├── config/ # App configuration
├── database/
│ ├── migrations/ # Database structure
│ └── seeders/ # Sample data
├── public/
│ ├── images/ # Uploaded images
│ ├── js/tinymce/ # Text editor
│ └── themes/ # Theme assets
├── resources/views/
│ ├── admin/ # Admin panel pages
│ ├── install/ # Installer pages
│ └── themes/ # Theme templates
├── routes/web.php # URL routes
└── storage/app/public/media # Media uploads

Security

NovaRadioCMS is built with security best practices. Here's what protects your site:

CSRF Protection

Every form is protected against cross-site request forgery attacks. This prevents other websites from submitting forms on your behalf.

XSS Protection

All user-generated content is automatically escaped before display, preventing malicious scripts from running on your site.

SQL Injection Prevention

The database layer uses parameterized queries through Laravel's Eloquent ORM, making SQL injection attacks impossible.

Password Security

All passwords are hashed using bcrypt with proper salt rounds. Plain text passwords are never stored.

Role-Based Access

The admin panel uses middleware to verify user roles before granting access. Only authorized users can access admin features.

Troubleshooting

Running into problems? Here are solutions to the most common issues.

Permission Denied Errors

This happens when the web server can't write to certain folders.

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

On shared hosting, you might need to use your file manager to set folder permissions to 755 or 775.

Blank Page or 500 Error

Usually caused by cached config or views. Clear all caches:

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

If this doesn't help, check storage/logs/laravel.log for the actual error message.

419 CSRF Error on Forms

This means your session isn't configured correctly.

SESSION_DRIVER=file
SESSION_LIFETIME=120

Also ensure the storage/framework/sessions folder exists and is writable.

Composer Install Fails

Try clearing the Composer cache and reinstalling:

composer clear-cache
composer install --no-scripts
php artisan key:generate

Images Not Showing Up

You probably need to create the storage symlink:

php artisan storage:link

This creates a symbolic link from public/storage to storage/app/public so uploaded files are accessible.

STILL STUCK?

Check the Knowledge Base for more solutions, or open an issue on GitHub with your error log.

Theme Development

Want to create your own theme or customize the look of your site? Here's how NovaRadioCMS themes work.

Theme Structure

Each theme is a folder containing Blade templates and assets:

your-theme/
├── theme.json # Theme metadata
├── views/
│ ├── layouts/
│ │ └── app.blade.php # Main layout
│ ├── home.blade.php # Homepage
│ └── partials/ # Reusable parts
└── assets/
├── css/
└── js/
1

Create theme.json

{
"name": "My Custom Theme",
"version": "1.0.0",
"author": "Your Name",
"description": "A custom theme for my radio station"
}
2

Build your templates

Copy the default theme as a starting point. Customize the Blade templates and CSS to match your branding.

3

Install the theme

ZIP your theme folder and upload it via Admin → Themes → Upload Theme. Or manually place the folder in resources/views/themes/

The default theme is a great reference. Study its structure before building your own.