Self-hosted music streaming web application built with vanilla PHP and MySQL.
- User authentication (register, login, remember me, password reset via email)
- Song browsing with search, mood filter, and sort
- Audio playback with HTML5 player
- Favorites management
- Playlist creation and management
- Listening history tracking
- User profile management (change username, password, delete account)
- Admin panel (manage songs, users, ban/unban, toggle roles)
- Dark/light theme toggle
- Responsive design
- PHP 8.0+
- MySQL / MariaDB
- Apache with mod_rewrite
- Composer
- Clone the repository into your web root (e.g.,
htdocs/vibebox) - Copy
.env.exampleto.envand edit database/SMTP credentials:cp .env.example .env - Create a MySQL database named
vibebox(or your preferred name):mysql -u root -p < vibebox.sql - Install Composer dependencies:
composer install - Make sure Apache has
AllowOverride Allfor the project directory - Access the app at
http://localhost/vibebox
The app will auto-create missing tables/columns on first run.
- SMTP credentials are stored in
.env(not committed to Git) - CSRF protection on all POST forms
- Rate limiting on login, registration, and password reset
- Session regeneration on login and password changes
- Remember tokens are hashed before database storage
- Passwords hashed with bcrypt
- Register a new account through the web interface
- The first registered user will have
userrole - Promote a user to admin via the database:
UPDATE users SET role = 'admin' WHERE email = 'your@email.com';