# Custom MVP Music — Website
**A Steam-login website for your MVP anthems. Players browse the songs, listen to them in the
browser and pick theirs in one click. You manage the catalog from an admin panel instead of editing
a config file over FTP.**
The site and the plugin share one MySQL database, so there is nothing to synchronise by hand. Add a
song on the website and it shows up in the in-game `!mvp` menu within seconds. A player who picks an
anthem on the site hears it the next time they are MVP, without reconnecting — and a pick made in
game shows up on their profile immediately.
---
## Before you buy — read this part
**This is the companion website for the Custom MVP Music plugin, not a standalone product.** It
edits the plugin's database. Without the plugin installed on your CS2 server, nothing plays in game.
Two practical requirements:
- **The website needs to reach the plugin's MySQL database.** If the site and the game server are on
different machines — the usual case — you have to allow the web host's IP to connect (in cPanel
that is *Remote MySQL*), or move the database next to the site and point the plugin at it.
- **A Steam Web API key**, free from Steam, for player names and avatars.
Beyond that it runs on ordinary shared hosting. There is no Node build step, no queue worker, no
`storage:link`, and no cron job — plain PHP 8.3 and MySQL are enough. A cPanel walkthrough is
included.
---
## What your players get
**A catalog worth browsing.** Cover art, category chips, instant search, and a "N players use this"
count on every song that includes in-game picks, not just website ones.
**Previews in the browser.** Upload a short clip per song and players can listen before they commit,
instead of picking a name blind and waiting for their next MVP round.
**One click to set their anthem** — a specific song, a shuffle across everything, or a shuffle
inside a single category. The same three options the in-game menu offers.
**Hot this week and a live feed.** The five most-played songs of the last seven days, and the last
eight MVPs as they happen. It makes the page feel alive and quietly advertises your server.
**A personal profile** (`/me`): their current anthem, their MVP history, their most-played songs, and
a switch to mute other players' anthems that takes effect in game.
**VIP songs are marked.** The site mirrors the plugin's free-song limit and badges everything past
it, so players can see what a VIP rank unlocks. The plugin does the actual enforcement.
---
## What you get as an admin
**Songs.** Add, edit, hide or delete. Cover upload, preview clip upload, category, in-game
permission, sort order. Hiding a song takes it out of the menu without losing anyone's pick — it
comes back exactly as it was.
**A "never played" flag.** The plugin stamps every song it successfully plays. Any song that has
never been stamped is flagged for you, which is how you catch a soundevent name that was typed wrong
months ago and has been silently failing ever since.
**Categories.** Create genres, give each a colour, set an optional in-game permission that locks the
whole genre, reorder them — all inline, without leaving the page.
**Players.** Everyone who has picked an anthem, what they picked, and a reset button.
**A dashboard** with plays per day over two weeks, the top songs of the last 30 days, recent
sign-ins, and a list of players pointing at songs that are currently hidden.
---
## Sign-in and access
Sign-in is **Steam OpenID only** — the site never sees or stores a password. Steam returns the
SteamID; the Web API supplies the name and avatar.
Admin access is a list of SteamID64s in the `.env` file, deliberately **not** a database flag.
Nothing that happens inside the database or the admin panel can promote anyone to admin.
Uploaded covers are re-encoded server-side into square WebP images. A 5 MB phone photo becomes a
~40 KB tile, and nothing but pixels ever lands in the web root, whatever the upload claimed to be.
---
## How it talks to the plugin
Both sides use the same `mvp_music_*` tables. The plugin pulls catalog changes on a timer you set
(default: every 10 seconds) and reads picks when a player connects; the website reads and writes the
same rows.
- Songs added, edited or hidden on the site reach the server within seconds. The soundevent still
has to exist in your workshop addon — the website registers it, it does not upload audio to CS2.
- Picks and the mute setting travel in both directions, no reconnect needed.
- Every anthem played in game feeds the site's history, leaderboards and "never played" flag.
- Renaming a soundevent or a category slug carries picks and history with it. Nobody loses anything.
Turn website integration off in the plugin's config and the site's tables are never touched.
---
## Requirements
| | |
|---|---|
| The Custom MVP Music plugin | sold separately — required |
| PHP | 8.3 or newer, with the GD extension for covers |
| MySQL / MariaDB | the same database the plugin uses |
| A domain with HTTPS | Steam only redirects back to the exact public URL |
| Steam Web API key | free, from Steam |
Laravel 13, Tailwind CSS v4 and Alpine.js. The stylesheet ships pre-built and Alpine is served from
your own server, so no Node and no CDN are involved.
---
## What you get
- The complete site, ready to upload.
- `DEPLOY.md`: a step-by-step cPanel deployment walkthrough, including the document-root setup, the
`.env` keys and the Remote MySQL note.
- A demo seeder that fills the site with example songs, players and two weeks of play history, so
you can see the finished thing before you point it at live data.
- Database tables are created by whichever side runs first. There is no SQL to import.
---
## Version
**1.0** — current release.
---
## License and support
- Use it for as many of your own servers and communities as you like, for as long as you like.
- Do not redistribute, resell, share or publish the files, in whole or in part.
- Updates for this major version are free.
- No refunds after the files have been delivered — the requirements above are listed in full, so
please make sure your setup matches before buying.
Questions before buying are welcome.
---
*Custom MVP Music — Website · by illusion @ CodeStrike*