legacy-bossmenu
Overview
What legacy-bossmenu is and how it fits together.
legacy-bossmenu
Legacy Boss Menu is a society management dashboard for any framework, built on top of legacy-lib, ox_lib and oxmysql. It gives job bosses a full NUI dashboard for managing their organization, and gives admins in-world tools to place and configure boss menu access points.
What it does
- NUI dashboard — employee list, society balance/revenue, transactions, activity feed, and audit log, all served from a single bootstrap callback (
legacy-bossmenu:getInitData). - Boss actions — deposit, withdraw, transfer, hire (nearest player), fire, promote, demote, and open the boss stash, each authorized server-side and written to an audit trail (
legacy_bossmenu_audit) with optional Discord webhook notifications. - In-world zones — boss menus are opened by walking up to an
ox_targetsphere zone. There is no direct player command to open the menu; zones are the only entry point (aside from theOpenBossMenuexport). - Admin zone editor — a raycast-based placement tool (
/bossmenu_adminby default) lets admins create, move, resize and delete zones live in the world. Zones persist todata/locations.json(migrated once from the legacylegacy_bossmenu_locationstable on first boot). - Duty tracking — the client sends a heartbeat every 60 seconds while on duty, which the server buckets into
legacy_bossmenu_hoursfor heatmaps and per-employee stats.
Architecture notes
- Money movement (deposit/withdraw/transfer) goes through
legacy-lib's Banking bridge, not directly through SQL. Revenue/balance charts and the transactions list, however, querylegacy_banking_transactionsdirectly — meaning rich charts and thetransferaction only work whenlegacy-bankingis the active banking resource. Other banking bridges will still support deposit/withdraw, but with empty charts and no transfers. - Per-employee bills/revenue figures require
legacy-billing(querieslegacy_billsdirectly); if it's not installed those figures stay empty. - Boss menu zones are the authoritative source of truth for access, and live in a JSON file (
data/locations.json) managed vialegacy-lib'sStore(), not the SQL table — the SQL table (legacy_bossmenu_locations) is only used once, to migrate old data in, and afterward is left untouched.