visavi / rotor
Rotor
Package info
Type:project
pkg:composer/visavi/rotor
Requires
- php: ^8.3
- ext-curl: *
- ext-fileinfo: *
- ext-gd: *
- ext-intl: *
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
- ext-zip: *
- cbschuld/browser.php: ~2.0
- google/recaptcha: ~1.3
- intervention/image: ^4.0
- laravel/framework: ^13.0
- mobicms/captcha: ^5.1
- php-ffmpeg/php-ffmpeg: ^1.3
- symfony/html-sanitizer: ^7.4
- visavi/captcha: ^3.1
- visavi/cleanup: ^2.2
Requires (Dev)
- barryvdh/laravel-debugbar: ^4.0
- deployer/deployer: ^8.0
- fakerphp/faker: ^1.24
- larastan/larastan: ^3.9
- laravel/pint: ^1.22
- laravel/sail: ^1.41
- laravel/tinker: ^3.0
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.0
- spatie/laravel-ignition: ^2.12
This package is auto-updated.
Last update: 2026-07-21 08:22:54 UTC
README
Lightweight modular CMS with a forum, blogs, gallery and file downloads.
Fast even on cheap shared hosting.
Rotor is an open source content management system written in PHP. It combines a community platform (forum, guestbook, wall, private messages) with classic site features (news, blogs, photo gallery, downloads, static pages) in a single lightweight package.
The engine is built on Laravel components but stays deliberately small: it installs in minutes, runs comfortably on inexpensive shared hosting, and keeps server load minimal even with a large audience.
Screenshots
| Home page | Forum |
|---|---|
![]() |
![]() |
Live example: visavi.net — the developer community site, always running the latest version of Rotor.
Features
- Forum — categories, topics, voting, moderation
- Blogs and news — articles with comments, categories, RSS
- Photo gallery — albums, comments, watermarks
- Downloads — file archive with categories and moderation
- Community tools — guestbook, user walls, private messages, boards (classifieds), mini-chat
- Users — registration, social auth, groups and permissions, ratings, custom profile fields
- Administration — full admin panel, page editor, style editor, backups, logs, spam/word filters
- Modular architecture — features ship as modules that can be installed, updated and disabled independently
- Performance — aggressive caching, minimal queries, works well without opcache tuning or dedicated servers
- Themes — customizable templates and styles
Requirements
- PHP 8.3+
- MySQL 5.7.8+, MariaDB 10.2.7+ or PostgreSQL 9.2+
- Any web server: Apache, Nginx, or the built-in PHP server
Quick start
One command (Composer)
composer create-project visavi/rotor .
Then open the site in a browser — the installer starts automatically and walks you through database setup and creating an admin account.
For the latest development version:
composer create-project --stability=dev visavi/rotor .
Docker (Laravel Sail)
git clone https://github.com/visavi/rotor.git
cd rotor
cp .env.example .env
composer install
./vendor/bin/sail up -d
Open http://localhost and follow the installer.
From an archive
- Unpack the archive so that
publicis the web root (not required for Apache — the bundled.htaccesshandles it) - Copy
.env.exampleto.envand fill in the database credentials, admin login/email and mail settings - Make the directories inside
public/uploads,public/assets/modules,bootstrap/cacheandstoragewritable, or runphp artisan app:permission - Open the site's main page — you will be redirected to the installer
Manual installation
git clone https://github.com/visavi/rotor.git cd rotor cp .env.example .env # fill in DB credentials, admin login/email, mail settings composer install php artisan migrate php artisan db:seed
Create the database with utf8mb4 encoding beforehand:
CREATE DATABASE rotor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Local run without a web server
php artisan serve
Then open http://localhost:8000.
Server configuration
Cron
* * * * * php /path-to-site/artisan schedule:run >>/dev/null 2>&1
Apache
Two layouts work on typical shared hosting:
- Default. Put all files in
public_html. The.htaccessin the site root redirects every request to thepublicdirectory, and the.htaccessinsidepublicroutes them toindex.php. - Split. Put the engine one level above
public_htmland move the contents ofpublicintopublic_html. Uncomment the corresponding code inapp/Providers/AppServiceProvider.phpto point the engine at the new public path. The root.htaccesscan then be removed.
Nginx
Add to the server section (strips trailing slashes and blocks direct PHP access in upload dirs):
if (!-d $request_filename) { rewrite ^/(.*)/$ /$1 permanent; } location ~* /(assets|themes|uploads)/.*\.php$ { deny all; }
In location / replace:
try_files $uri $uri/ =404;
with:
try_files $uri $uri/ /index.php?$query_string;
Development
Frontend assets (Vite)
npm ci npm run build
Migrations and seeding
php artisan migrate:status # current migration status php artisan migrate # run migrations php artisan migrate:rollback # rollback the last batch php artisan db:seed # seed the database
Production caching
With APP_ENV=production routes and configuration are cached automatically.
Community & support
- Forum: visavi.net — questions, modules, themes, announcements
- Telegram: @visavi
- Issues: GitHub Issues — bug reports and feature requests
Contributions are welcome — fork the repository and open a pull request.
Author
Vantuz — visavi.net · admin@visavi.net · Telegram @visavi
License
Rotor is open-sourced software licensed under the GPL-3.0 license.


