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?
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
The programming language NovaRadioCMS runs on
The database where your content is stored
A tool for installing PHP packages (your host may have it pre-installed)
The software that serves your website to visitors
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:
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.
Download the files
Download NovaRadioCMS from GitHub and upload all files to your web server's root folder.
Create a database
Log in to your hosting control panel and create a new MySQL database.
Set folder permissions
chmod -R 755 bootstrap/cache
mkdir -p storage/framework/{views,cache,sessions,testing}
mkdir -p storage/logs storage/app/public
Install dependencies
Run the web installer
Open your browser and go to:
You're done!
Your NovaRadioCMS is now installed. Log in to the admin panel at /admin to start customizing.
Method 2: Manual Installation (Advanced)
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_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.
Your website automatically shows a live radio player with play/pause and volume controls, displaying current song, song history, and listener count.
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.
Create detailed pages for each DJ with their photo, biography, music genres, equipment, and social media links.
Set up your weekly broadcast schedule showing which shows run on which days and times.
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.
Upload and organize images in folders. Use drag & drop to upload files. Insert images directly into your articles from the media library.
Add your team members with photos, roles, and their social media profiles.
Built-in privacy policy, terms of service, and cookie policy pages. A cookie consent banner with granular controls.
Automatic meta tags, Open Graph tags for social sharing, Twitter Cards, and search-engine-friendly URLs.
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
Site name, tagline, and basic settings
Contact information and email settings
Social media links (Facebook, Twitter, Instagram, etc.)
Meta tags, Open Graph, and search engine settings
Hero image, logo, favicon, and color scheme
Stream URL and radio player settings
User Roles
Full access to everything — settings, content, users, themes, media
Can create and edit content but cannot change settings or manage users
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:
├── 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 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 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_LIFETIME=120
Also ensure the storage/framework/sessions folder exists and is writable.
Composer Install Fails
Try clearing the Composer cache and reinstalling:
composer install --no-scripts
php artisan key:generate
Images Not Showing Up
You probably need to create the storage symlink:
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:
├── theme.json # Theme metadata
├── views/
│ ├── layouts/
│ │ └── app.blade.php # Main layout
│ ├── home.blade.php # Homepage
│ └── partials/ # Reusable parts
└── assets/
├── css/
└── js/
Create theme.json
"name": "My Custom Theme",
"version": "1.0.0",
"author": "Your Name",
"description": "A custom theme for my radio station"
}
Build your templates
Copy the default theme as a starting point. Customize the Blade templates and CSS to match your branding.
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.