Description
A music app where players join shared listening rooms, queue tracks to a playlist, and hear playback synchronized off a server-owned play clock so a late joiner drops in at the correct offset. Proximity playback fades the audio with distance to co-listeners. The synchronization is the technical moat, which is why social-RP servers pay for it over a per-client player.
Prompt Template
You are writing a FiveM resource for esx/qb-core/qbox.
The full prompt template and its reference Lua are part of a one-time pack. Pick your depth β both are lifetime access, no subscription, ever.
- 60 prompts + syntax-validated reference Lua
- Lifetime access β pay once
- All 510 prompts β the full library
- Per-prompt profit/trend intelligence (CSV + playbook)
- Lifetime free updates β new niches as the market moves
$49 for 60 Β· $199 for all 510 + intelligence β one-time, no subscription.
Expected Output
The reference Lua lives at content/expected-outputs/phone/26-music-streaming-app.lua. It implements server-owned rooms with a startedAt play clock, offset-correct sync for late joiners, anβ¦
The full prompt template and its reference Lua are part of a one-time pack. Pick your depth β both are lifetime access, no subscription, ever.
- 60 prompts + syntax-validated reference Lua
- Lifetime access β pay once
- All 510 prompts β the full library
- Per-prompt profit/trend intelligence (CSV + playbook)
- Lifetime free updates β new niches as the market moves
$49 for 60 Β· $199 for all 510 + intelligence β one-time, no subscription.
Known Failure Modes & Corrective Prompt
- Client-owned clock β Claude lets each client time its own playback, so listeners drift. Keep
startedAtserver-side and compute every joiner's offset from it. - Anim before load β
TaskPlayAnimno-ops if the dict is not loaded; alwaysRequestAnimDict+while not HasAnimDictLoaded(dict) do Wait(0) end. - One-sided net event β defining
music:sync/roomListon only one side breaks the join round-trip; both client and server useRegisterNetEvent+AddEventHandler.
Corrective re-prompt: "Make the server the single play clock: store startedAt per room, and when a player joins a room that is already playing, send music:sync with offset = os.time() - startedAt so they seek to the correct position. The client must never decide playback time on its own."
Framework Integration
- ESX: resolve players with
exports['es_extended']:getSharedObject(); rooms and sync are framework-agnostic, only the player-resolve call changes. - QBCore: use
exports['qb-core']:GetCoreObject(); gate room creation behind a job or item viaQBCore.Functions.GetPlayerif you want premium rooms. - QBox: use
exports.qbx_core:GetPlayer(src); the play-clock and proximity logic are identical.
Profit Potential
$150β$2000/mo on Tebex (expected ~$500). [INFERRED] priced inside the $50-389 script band against the signal-scraper tebex_snapshot corpus (n=100, median seller $11.85K/mo); a stable social-RP niche where the sync moat sustains steady volume.
Trend Signal
β stable β inferred: Steady demand but DMCA/source-risk on audio; playback sync is the technical moat.
Sales Angle
The synced listening-room app where every member hears the same beat at the same second, with proximity falloff for immersion. Recommended Tebex price $159.
Difficulty & Ship Time
intermediate Β· ships in 4-6h.