Skip to content

Configuration

All of DarkMarket's configuration lives in shared/config.lua. This file stays editable even on escrow-protected builds (it is listed in escrow_ignore, along with locales/*.json).

Main options

OptionDefaultDescription
Config.AppIdentifier'darkmarket'Internal identifier in lb-phone. Do not change after deployment.
Config.Locale'en'Active UI language. Must match a file in locales/.
Config.AppIcon'nui://lo_darkmarket/assets/darkmarket.jpg'App icon. Leave '' to use lb-phone's default icon.
Config.AppImages{}Screenshots shown on the App Store page.
Config.DevModefalseLoads localhost:3000 instead of ui/dist (development).
Config.DevURL'http://localhost:3000'Vite server URL in dev mode.
Config.Storage'oxmysql'Persistence mode: 'oxmysql' or 'memory'.

Channels (private chats)

Config.Groups block — settings for the encrypted channels.

OptionDefaultDescription
nameMin / nameMax2 / 32Channel name length.
aliasMin / aliasMax2 / 24Per-member alias length.
codeLength8Access code length.
maxPerPlayer15Max simultaneous channels per player.
historyLimit100Messages loaded when opening a channel.
msgMaxLength1000Maximum message length.
codeAlphabet'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'Characters used to generate codes.

NOTE

The default alphabet deliberately excludes I, O, 0 and 1 to avoid visual confusion when reading or typing an access code.

Black market

Config.Market block — listing settings.

OptionDefaultDescription
titleMin / titleMax3 / 80Title length.
descMin / descMax5 / 500Description length.
priceMin / priceMax1 / 9999999Allowed price bounds.
listingsLimit100Number of listings loaded.
maxImages5Max photos per listing.
expireAfterDays0Auto-delete after X days (0 = never).

Categories

Config.Categories defines the market categories. The id is stored in the database and must not change; the displayed label is translated in the language files (keys cat_<id>), the label in the config being only a fallback. Keep all first.

lua
Config.Categories = {
    { id = 'all',         label = 'All',         icon = 'grid'    },
    { id = 'weapons',     label = 'Weapons',     icon = 'gun'     },
    { id = 'drugs',       label = 'Substances',  icon = 'pill'    },
    { id = 'electronics', label = 'Electronics', icon = 'chip'    },
    { id = 'vehicles',    label = 'Vehicles',    icon = 'car'     },
    { id = 'services',    label = 'Services',    icon = 'wrench'  },
    { id = 'misc',        label = 'Misc',        icon = 'box'     },
}

Storage

lua
Config.Storage = 'oxmysql'  -- 'oxmysql' (recommended) or 'memory' (RAM, lost on restart)

WARNING

'memory' mode keeps no data after a resource restart. Reserve it for testing; use 'oxmysql' in production.

Notifications

Config.Notifications block.

OptionDefaultDescription
onNewMessagetruePhone notification on each new message.
broadcastNewListingstruePush to all online players when a listing is published.

Languages

The active language is set by Config.Locale (available values: en, fr, es, de, it, pt). Translations live in locales/*.json and are bundled into the UI.

To tweak the interface wording, edit the matching file in ui/src/locales/ then run npm run build. The root locales/ files are listed in escrow_ignore, so they stay editable on escrow-protected builds.

Tips

TIP

  • Never change Config.AppIdentifier or the category ids after deployment: they are stored in the database.
  • For a fork, change Config.AppIdentifier before going to production.
  • A custom icon goes in assets/ (see assets/README.md) or via a hosted URL.
  • Adjust maxPerPlayer and priceMax to match your desired RP balance.