Overview
CC Scripts sells premium scripts for FiveM — the GTA V multiplayer platform that thousands of roleplay communities run their servers on. I build and run it with my business partner Christian: I own the design, the storefront, and the full-stack build, and we share the product and the business. He owns the server setup on his homelab.
It isn't a concept or a thesis project — it's a live business with real customers and real revenue. We relaunched it with a custom storefront, a flagship product with its own landing page, and a store-wide subscription, and in the first month the relaunch did 100+ sales from 2,000+ visitors at a ~20% bounce rate. The whole bet was a simple one: in a market where almost everyone sells from the same templated store, craft itself would be the differentiator — a storefront that feels like real software, not a mod shop.
A market that sells from templates
FiveM scripts — "resources" — are sold by creators to server owners, usually for €15–30 each, and the default way to sell them is Tebex, the payment-and-licensing platform almost every game-server creator uses. Tebex ships a hosted storefront out of the box, which is exactly why most script stores look identical: the same templated grid, the same generic theme, the same checkout everyone else has.
That sameness is the opening. Server owners are spending real money, but the buying experience rarely signals it — so a store that actually feels considered earns trust before the buyer has read a single line of copy. Nobody expects a mod store to feel like a product, which is precisely why building one that does stands out.
So the brief I set myself was blunt: build the storefront FiveM doesn't have. Treat it like a SaaS product, not a plugin page — and let the polish do the persuading.
A storefront, not a plugin page
The store runs on Tebex Headless. Tebex still handles payments, licensing, and fulfilment behind the scenes, but the entire frontend is ours — built in Next.js, TypeScript, Tailwind, and shadcn/ui. That split is the whole trick: we get a real commerce backend without running payment infrastructure, and total control over how the thing looks and moves.
And what it looks like is deliberate. A dark, high-contrast theme with a single blue accent, a floating pill navigation, generous type, and motion that's present but never noisy. Every surface is built from one small design system, so the catalog, the Heist Contracts landing page, the product pages, and even the internal tooling all feel like one product.
The catalog leads with two anchors before the grid even starts: a Featured slot for Heist Contracts — the flagship — and a Best value slot for the store-wide subscription. Every script, the flagship included, sells the same honest way: one card, one price, Add to Cart. No forks, no per-item checkout maze — the merchandising does the steering.
The flagship gets its own page
This is the part I'm proudest of. Heist Contracts is the biggest thing we make — a full heist system, not a single script: a dashboard, a rotating contract market, crews, leaderboards, 30+ minigames, and five full heists in the box. A product that big shouldn't be crammed into a catalog card. So it gets its own dedicated landing page, sold the way real software is.
We tried selling the pieces separately first — a base plus individual heists, composed in a builder. It was clever, but it made buyers do arithmetic before they'd even decided they wanted in. So we cut it. Now the whole system is one complete package: buy it once at €74.99, get every heist, every minigame, the dashboard, and every future heist on release day — no add-ons, no per-location DLC.
The page earns the price by showing the depth: a live, interactive preview of the Contracts dashboard right under the hero, then the systems that make it a service — the rotating market, crews with enforced payout splits, leaderboards — and finally the lineup, five heists laid out with art, difficulty, and crew size, plus what's coming next. One decision, one price, and everything visible before you commit.
That's the whole shift from the old builder: instead of asking buyers to assemble a product, we assembled it for them and put the case for it on one page.
From a catalog to a service
One-time purchases are the floor, not the ceiling. Sitting above the whole catalog is a store-wide subscription: €24.99/mo for every script we make — the Heist Contracts system included — plus every future release on the day it ships.
It reframes the whole store. A buyer weighing the €74.99 heist package next to a couple of standalone scripts is one decision away from "just get everything — and everything we make next." The subscription page leans all the way into that: every script's cover art floating around a single, unambiguous promise — one subscription, every script included.
The pitch writes itself because the offer is honest: new scripts released regularly, and subscribers get each one the day it ships — no tiers, no per-script math.
Where the decision happens
Each script gets a full product page built to close, not just to list. A video leads — for FiveM, seeing the script run matters more than any feature list — followed by framework-compatibility tags, plain-language copy about how it actually plays, the price, and a single clear action.
The CTA is just Add to Cart — no fork, no configurator to work through first. What does the persuading isn't a clever purchase flow, it's the page itself: the video, the honest copy, and the trust signals sitting right next to the button — a 7-day money-back guarantee and Cfx.re escrow protection. In a market where buyers have been burned by fly-by-night sellers, saying "here's exactly what you get, and here's your safety net" closes more than any upsell.
Shipping like a studio, with a team of two
A storefront is only half the business. The other half is keeping nine scripts updated across a live customer base — and doing that by hand (build each resource, upload it, write a changelog, announce it) is the kind of busywork that quietly caps how fast two people can move.
So the same app that sells the scripts also ships them. I built a release tool into it: every repo in our cc-fivem GitHub org shows up with its publish state, its asset ID, and the commit it last shipped from.
Pick a repo, write what changed (or leave it blank and let it fall back to the latest commit message), and publish. Under that one button: the tool builds the resource, diffs the changed files against the last published commit so only what moved gets uploaded, pushes the new version to the asset portal, and — if you leave the toggle on — posts a release note to Discord for customers. There's a release-candidate switch for betas and an option to prune old uploads.
This is the unglamorous infrastructure that makes everything else sustainable. It's the reason "new scripts released regularly" is a promise we can actually keep — and why new heists like Container Heist and Jewelry Heist slot into the package without the operation getting heavier.
One system, end to end
Storefront, commerce, content, and operations all run as a single connected system, each part handing off cleanly to the next.
The storefront renders the catalog and the Heist Contracts page; Tebex Headless handles payments, licensing, and fulfilment; the release pipeline pushes updates from GitHub to the asset portal and announces them on Discord; and email campaigns bring buyers back for the next drop. Nothing is bolted on — the dev/ops side ships what the store sells, the store sells it, and email pulls buyers back for the next drop, closing the loop. One brand, one design system, top to bottom — which is exactly why a two-person studio can present like a much bigger one.
Getting it in front of servers
A great store does nothing if no one sees it, so distribution was treated as part of the build, not an afterthought. The relaunch went out across the channels server owners actually live in: the Cfx.re marketplace, YouTube creator outreach, an affiliate program, partner Discords, and email campaigns for launches and giveaways — all carrying the same visual language as the store itself.
That's where the 2,000+ visitors in month one came from. The marketing got people to the door; the storefront's job was to make them stay.
Outcome
The relaunch validated the bet in its first month.
100+
sales in the first month after relaunch
2,000+
visitors in the first month
~20%
bounce rate — people arrive and stay to look
For a niche store selling to a specific audience, a ~20% bounce rate is the number that matters most: people arrive, recognise within a second that they're somewhere built with care, and stay to browse. The craft isn't decoration — it is the conversion strategy, and the homepage's "1,000+ customers served" is the social proof that compounds on top of it.
And the system keeps paying off. Every new heist ships through the same pipeline, drops straight into the same package, and joins the same subscription — so the catalog grows while the operation stays light. The store I built once keeps doing the selling.
