DarkMarket
DarkMarket is a clandestine app for lb-phone: a parallel network where your players trade away from prying eyes. Encrypted channels joined by code, a black market of RP listings and private messages, all wrapped in a "terminal" aesthetic.
Overview
The app is downloaded from the phone's App Store and revolves around three areas:
- Encrypted channels — private group chats joined with an 8-character access code. Each member uses a per-channel alias: their real number never leaks.
- Black market — RP listings sorted by category (weapons, substances, services…), with multiple photos per listing and real-time broadcasting.
- Private messages (DMs) — contacting a seller opens a one-to-one conversation, with an unread badge.
Features
- Random access codes — confusion-free alphabet (no I, O, 0 or 1).
- Per-channel aliases — your real number stays hidden.
- Multi-photo listings — native gallery or URL, swipeable on the listing page.
- Built-in DMs — direct contact with the seller and an unread badge.
- Location sharing — send your position; the recipient sets a GPS waypoint in one tap.
- GIFs, emojis and gallery photos — via lb-phone's native pickers.
- Editable profile — username, avatar and bio.
- Native lb-phone notifications.
- Real-time — instant broadcasting of messages and listings.
- Anti-spam — per-event rate limiting and a blacklisted-word filter.
- 6 languages — English, French, Spanish, German, Italian, Portuguese.
Compatibility & dependencies
| Dependency | Status | Role |
|---|---|---|
| lb-phone | Required | Host phone for the app |
| oxmysql | Optional (at runtime) | Data persistence |
NOTE
If oxmysql is missing at startup, the app automatically falls back to memory mode: everything works, but data is lost when the resource restarts. Handy for testing, not recommended for production.
Technical overview
| Item | Detail |
|---|---|
| Frontend | Vue 3 + TypeScript (UI served in an iframe by lb-phone) |
| Backend | Lua (client + server) |
| Persistence | oxmysql, with in-memory fallback if oxmysql is absent |
| Languages | 6 (en, fr, es, de, it, pt), locales/*.json files |
| Database | Created automatically on start, or via installation.sql |
The UI talks to the backend through lb-phone's fetchNui bridge; the server broadcasts new messages, DMs and listings in real time. The app's internal identifier is darkmarket.
Next steps
- Installation — add the resource and prepare the database.
- Configuration — every option in
shared/config.lua.