Skip to content

np_phone v0.1.0 ​

An iOS-styled roleplay phone for FiveM (qbx / qb / ESX, pma-voice / SaltyChat / YACA). It has a grayscale cloud wallpaper, glossy grey squircle icons without labels, single-colour tints for "loud" apps, the server ID next to the clock, and a floating dark dock.

Status: feature-complete, not yet tested on a live server

Every app is built (Lua server and client, React NUI). Everything passes luac -p, npm run typecheck / npm run build, and a plain-Lua harness that boots the resource against stubbed FiveM / oxmysql / framework APIs. It has not run on a real FiveM server with real frameworks, voice and inventories yet. Expect bridge-level fixes on first contact.

Home & lock screen

Shell ​

  • Lock screen with the in-game clock, weather and widgets. Optional passcode: hashed on the server, rate-limited, and Config.EnforcePasscode rejects app RPCs until the phone is unlocked.
  • Home pages with a drag-to-rearrange edit mode, and an App Store with apps gated by item, job or duty, plus third-party iframe apps.
  • Control Center: airplane mode, DND, Wi-Fi/Bluetooth, brightness/volume, radio, flashlight, streamer mode.
  • Dynamic Island with Live Activities (calls, group jobs, timers).
  • Notifications: banners, a notification center and deep links into apps.
  • Walk mode: keep moving while the phone is open. The NUI takes keyboard focus only while you type.
  • In-game stage in the bottom-right, with ring mode: the phone peeks up for an incoming call and Y / Backspace answers or declines.
  • Full-screen overlay mode for the camera HUD.
  • Apps stay mounted under the lock screen for Config.KeepAppMinutes.

Apps ​

AreaApps
CommsPhone, Messages, Contacts, Darkchat
CityWallet, Mail, Garage, Groups, Jobs, Info
Social & servicesChirp, Yellow Pages, Maps, Calendar, Stocks, Transit, News
MediaCamera, Photos, Notes, Files
SystemSettings, App Store, Clock (alarms, stopwatch, timer), Calculator

See All apps for a one-line summary of each app.

Integrating from other resources ​

lua
-- server
exports.np_phone:notify(src, { app = 'mail', title = 'Bank', body = 'Your loan was approved.' })
exports.np_phone:sendMail(src, { sender = 'Dynasty 8', subject = 'Your new home', body = '...' })
exports.np_phone:createInvoice(src, { sender = 'LSPD', senderJob = 'police', amount = 350, reason = 'Speeding' })
exports.np_phone:addFile(src, { type = 'document', title = 'Property Deed', issuer = 'Dynasty 8' })

-- client
if exports.np_phone:isOpen() then exports.np_phone:close() end

See Exports for the full list.

Next steps ​

np_* FiveM resources