WaveHost
The integrations of the WaveHost client panel: VPSs created on Proxmox VE nodes through a job queue, game servers in Pterodactyl with console and power from the panel, Stripe payments with a signed webhook and a shop that pulls its offers from the brand's website on its own. The panel watches node resources and takes packages that no longer fit off sale, and every support ticket gets a private Discord channel from which the team answers straight into the panel.
Overview
WaveHost is a hosting brand that sells VPSs, dedicated servers and game servers. Its client panel is not an island: the VPSs live on Proxmox VE nodes, the game servers in Pterodactyl, the offer on the brand's website, payments in Stripe and support on Discord.
The panel ties all of that together, so the client orders, pays and manages services in one place, and the team never copies anything by hand from one system to another.
VPSs on Proxmox VE
Ordering a VPS does not build the machine during the client's request. The order goes into a job queue handled by a separate worker, so long operations on a node never block the panel and a failed step can be retried. The worker talks to the Proxmox VE API of each node, and the node credentials, the API address, the token id and the token secret, are kept in the database. A new node is added in the admin panel, without changing the server configuration.
The same worker collects machine metrics and rolls them up into the aggregates behind the charts in the client panel.
Game servers in Pterodactyl
The game panel stays Pterodactyl, and the client panel talks to it through two interfaces. The Application API handles admin matters: accounts, servers and port allocations. The Client API provides what the Application API does not expose: power, the console and live resource usage. The client restarts a server and watches its console from the WaveHost panel, without signing in anywhere else.
Clients of the old panel link their account with a signed link. The account details and balance travel encoded and signed with HMAC-SHA256 using a secret both sides share, with an expiry, so nobody can forge the link and the client never signs up twice.
A shop fed from the brand's website
The brand's offer has one source of truth: the website's admin panel. The client panel pulls offers and packages from it on its own, with names, prices, descriptions, feature lists and badges. The technical parameters, the node, the game and the exact cores, memory and disk, stay in the panel administrator's hands and are only pre-filled from the feature list when a field is empty.
marketing sets the offer, the price and the description in the website panel.
the client panel pulls offers as categories and packages as shop products.
assigns the node, the game and the technical parameters.
the panel checks the node's resources and decides whether the package can be bought.
Packages that no longer fit
The platform watches node resources and takes offers that no longer fit on them off sale on its own, keeping a margin of memory and disk free. Offers in manual mode are left alone, and the mode is switched in the admin panel. A client never pays for a server that cannot be built.
Payments and sign-in
Payments go through Stripe, and the Stripe webhook is accepted only with a valid signature. Sign-in supports TOTP two-factor codes and passkeys, forms are protected by Cloudflare Turnstile, and emails go out through the brand's SMTP server.
Support on Discord
Every new ticket in the panel creates a private channel on the team's Discord server, hidden from everyone but the staff, with a pinned ticket card: subject, priority, the first message and the client's details. A reply written in that channel goes back to the ticket in the panel, and the bot marks it as delivered with a reaction. The team answers where it already is, and the client sees the whole conversation in the panel.
Questions about WaveHost
More projects
More work from the same category - see how we tackle similar challenges.
Have a similar project?
Get in touch - a quote is free and comes back within an hour.



